我使用LookAt(目标)功能:
public class cub : MonoBehaviour {
public float range = 5f, moveSpeed = 30f, turnSpeed = 150f;
public Transform target;
void Update(){
if (Input.GetKey(KeyCode.UpArrow))
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.DownArrow))
transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.LeftArrow))
transform.Rotate(Vector3.up * -turnSpeed * Time.deltaTime);
if (Input.GetKey(KeyCode.RightArrow))
transform.Rotate(Vector3.up * turnSpeed * Time.deltaTime);
}
}
public class cubeCamera : MonoBehaviour {
public Transform target;
void Update () {
transform.LookAt(target);
transform.position = new Vector3(target.position.x, target.position.y + 6, target.position.z - 25);
}
}
我从位置幼崽改变了摄像机的位置,我认为这是不对的。比如说,我需要绝对顺利地跟踪对象
答案 0 :(得分:2)
transform.position = new Vector3(target.position.x, target.position.y + 6, target.position.z - 25);
是问题的根源。在这里,每次更新都会移动对象固定数量的单位,似乎依赖于每秒60次更新。 "抽搐"(也称为抖动)是由于可变帧率。现代硬件上的游戏不能以60fps的速度运行(一帧可能是59,另一帧可能是61,等等)。帧率会根据游戏和系统的其他部分的不同而波动很大。
它看起来像这样:
在足够的帧数超过16.667ms(~60fps)后,您会注意到抽搐/抖动。解决方案是使更改框架独立。最简单的方法是将单位(在您的情况下为6和25)乘以Time.deltaTime。这会将您的计算从单位/帧更改为单位/秒,与帧速率无关。