【问题标题】:Unity Mouselook from any Player Orientation来自任何玩家方向的 Unity Mouselook
【发布时间】:2016-04-14 01:49:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: unity3d controls orientation


    【解决方案1】:

    您可以在播放器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;
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 2018-12-16
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多