Unity Mouselook来自任何玩家定位

时间:2016-04-14 01:49:21

标签: unity3d controls orientation

我正在制作第一人称游戏,角色能够锁定在任何平面上并在其上行走(有点像月球靴)。我遇到了相机的问题,因为我能够找到的大多数鼠标外观实现取决于玩家在世界上直接上下,所以只要我的“翻转”动画(玩家面向新的表面) )完成后,相机将立即按照世界的定义上下翻转。我需要的是一种实现鼠标外观的方法,这样它就不会在动画后重置旋转。我目前正在使用:

transform.Rotate(-Input.getAxis("Mouse Y") turnSpeed Time.deltaTime, Input.getAxis("Mouse X") turnSpeed Time.deltaTime, 0);

为了在避开标准方法的同时执行我的鼠标外观旋转,但这显然是不正确的,因为当水平转动相机时我得到一些奇怪的旋转。有没有更好的方法来实现鼠标外观,以便无论播放器的方向如何都能正常工作?

1 个答案:

答案 0 :(得分:0)

您可以在播放器Transform内放置相机并将此脚本添加到播放器:

public class MouseLook : MonoBehaviour {

    [SerializeField]
    Camera Camera;

    [Range(10f,50f)]
    public float Speed = 30;

    void Update () {
        transform.rotation = Quaternion.AngleAxis(Input.GetAxis("Mouse X") * speed * Time.deltaTime, transform.rotation * Vector3.up)*transform.rotation;
        Camera.transform.rotation = Quaternion.AngleAxis(-Input.GetAxis("Mouse Y") * Speed * Time.deltaTime, Camera.transform.rotation * Vector3.right)* Camera.transform.rotation;
    }
}

在检查器中添加对Camera的引用。您必须检查不要在相机上旋转+/- 90度以上,以避免过度旋转到后面。如果你有问题,我会帮助你。