上一篇lu的缓动代码,是围绕的某店转的,这个是自转的
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class CameraRotion : MonoBehaviour {
float x;
float y;
[Range(0,0.2f)]
[Header("调整平滑度,值越小越平滑")]
public float smoothness = 0.1f; //外部调整圆滑值
float insideSmoothness = 1f; //和smoothness关联,值越大,初始滑动越快,滑动的动作越大
bool keepMove = false;
float xdirection; //记录方向
float ydirection; //记录方向
// float index = 0;
// Use this for initialization
void Start () {
// insideSmoothness = smoothness;
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
StopAllCoroutines();
keepMove = false;
insideSmoothness = 1f;
// index = 0;
}
if (Input.GetMouseButton(0))
{
//if (EventSystem.current.IsPointerOverGameObject()) //检查是否点击到UI
//{
// return;
//}
x += Input.GetAxis("Mouse X") * 5;
y += Input.GetAxis("Mouse Y") * 5;
y = Mathf.Clamp(y, -90, 90);
transform.localEulerAngles = new Vector3(-y, x, transform.localEulerAngles.z);
xdirection = Input.GetAxis("Mouse X");
ydirection = Input.GetAxis("Mouse Y");
}
if (Input.GetMouseButtonUp(0))
{
keepMove = true;
StartCoroutine(KeepMove());
}
if (keepMove)
{
float x1 = insideSmoothness * xdirection;
float y1 = insideSmoothness * ydirection;
insideSmoothness = Mathf.Lerp(insideSmoothness, 0, smoothness);
// index += Time.deltaTime;
// print(insideSmoothness + " " + keepMove + "Time: "+ index);
// insideSmoothness = Mathf.Clamp(insideSmoothness, 0, insideSmoothness);
x = x + x1;
y = y + y1;
// y = y +0.5f * ydirection;
y = Mathf.Clamp(y, -90, 90);
transform.localEulerAngles = new Vector3(-y, x, transform.localEulerAngles.z);
}
}
IEnumerator KeepMove()
{
yield return new WaitForSeconds(2f);
keepMove = false;
}
}