我尝试制作一个第三人称相机,它跟随我的播放器并且相机应该旋转,但不是播放器,如果我使用我的控制器的正确模拟棒。我遵循了tutorial
我的代码:
void adjustCameraToPlayer()
{
Quaternion rotation = Quaternion.identity;
if (Input.GetAxis("RightStickX") != 0f)
{
float horizontal = Input.GetAxis("RightStickX") / 100f;
transform.Rotate(0, horizontal, 0);
float desiredAngle = transform.eulerAngles.y;
rotation = Quaternion.Euler(0, desiredAngle, 0);
}
transform.position = player.transform.position-(rotation * offset);
transform.LookAt(player.transform);
}
我的问题是相机旋转速度太快,我试图改变水平值的红利,但没有帮助。
答案 0 :(得分:2)
这就是为什么你总是应该将deltaTime
合并到每帧发生的变换操作中。这样你就不会每一帧都在旋转它,而是随着时间的推移。此外,你应该加入一个可以实时操作的speed
变量,这样你就可以按照你想要的方式进行调整:
public float speed = 5f;
void adjustCameraToPlayer()
{
Quaternion rotation = Quaternion.identity;
if (Input.GetAxis("RightStickX") != 0f)
{
float horizontal = Input.GetAxis("RightStickX");
transform.Rotate(Vector3.up * horizontal * speed * Time.deltaTime);
float desiredAngle = transform.eulerAngles.y;
rotation = Quaternion.Euler(0, desiredAngle, 0);
}
transform.position = player.transform.position-(rotation * offset);
transform.LookAt(player.transform);
}