第一人称控制器相机旋转不起作用

时间:2017-08-15 04:28:52

标签: c# unity3d transform

我正在寻找一些统一的c#脚本来更新第一人称控制器 相机旋转变换。更具体地说,我正在运行动画,并且在动画结束时,我在fps相机变换上设置了“电影摄像机变换”,如何显示代码。对于位置变量,一切都很好。但是,旋转变量不能很好地工作。 该变量使变换旋转正确(相同的摄像机变换),但我看不到场景的变化。 “第一人称控制器旋转变换” 总是得到发生的最后一个旋转坐标。 我已经测试了很多旋转功能,比如Rotate(Vector3),rotation,localRotation,eulerAngles,localEulerAngles ....

Vector3 pos, roteuler;
public Camera fpscam, movie;

void getPosRot(){
    roteuler = movie.transform.eulerAngles;
    pos = movie.transform.position;
}

void Update(){
    fps.transform.position = pos;
    fps.transform.eulerAngles = roteuler;
}

1 个答案:

答案 0 :(得分:0)

这是我的FPS脚本的摄影机部分:

public class PlayerController : MonoBehaviour
{
    float RotateX;
    float RotateY;

    public GameObject Camera;

    public float RotationSpeed = 3.0f;
    public float MaxYAxis = 60.0f;
    public float MinYAxis = -48.0f;

    private void Start()
    {

    }

    void Update()
    {
        Rotation();
    }

    void Rotation()
    {
        RotateX += Input.GetAxis("Mouse X") * RotationSpeed;
        RotateY += Input.GetAxis("Mouse Y") * RotationSpeed;
        RotateY = Mathf.Clamp(RotateY, MinYAxis, MaxYAxis);
        Camera.transform.localRotation = Quaternion.Euler(-RotateY, 0f, 0f);
        transform.rotation = Quaternion.Euler(0f, RotateX, 0f);
    }
}