【问题标题】:Rotate cameran around a gameobject in unity3d在unity3d中围绕游戏对象旋转相机
【发布时间】:2014-08-05 22:39:51
【问题描述】:

我想在使用 unity 3d 按下键时围绕 fbx 对象旋转相机。它是怎么做的?我尝试了一些示例,但它不起作用。首先我创建一个游戏对象并添加它的主摄像头。

【问题讨论】:

    标签: c# camera unity3d unityscript


    【解决方案1】:
    public class CameraOrbit : MonoBehaviour
    {
      public Transform target;
      public float speed = 1f;
      private float distance;
      private float currentAngle = 0;
    
      void Start()
      {
          distance = (new Vector3(transform.position.x, 0, transform.position.z)).magnitude;
      }
    
      void Update()
      {
          currentAngle += Input.GetAxis("Horizontal") * speed * Time.deltaTime;
    
          Quaternion q = Quaternion.Euler(0, currentAngle, 0);
          Vector3 direction = q * Vector3.forward;
          transform.position = target.position - direction * distance + new Vector3(0, transform.position.y, 0);
    
          transform.LookAt(target.position);
      }
    }
    

    我目前无法获得团结,所以我可能搞砸了。

    这个想法是保持一个你根据输入改变的角度。从角度创建一个四元数(四元数说明如何将向量旋转到某个方向),然后将向量旋转到该方向。从目标位置开始沿该方向移动一定距离,然后查看目标位置。

    这只是实现绕y轴旋转,如果你想绕x轴旋转,你只需要另一个角度变量,然后更改为这个 Quaternion.Euler(currentAngleX, currentAngleY, 0);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      相关资源
      最近更新 更多