Unity3D中的第三人称相机追随者

时间:2015-10-15 12:06:27

标签: unity3d camera

我尝试制作一个第三人称相机,它跟随我的播放器并且相机应该旋转,但不是播放器,如果我使用我的控制器的正确模拟棒。我遵循了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);
}

我的问题是相机旋转速度太快,我试图改变水平值的红利,但没有帮助。

1 个答案:

答案 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);
}