在unity3d中围绕游戏对象旋转cameran

时间:2014-06-16 06:52:03

标签: c# camera unity3d unityscript

我想在使用单位3d按下键时围绕fbx对象旋转相机。它怎么办?我尝试了一些例子,但它没有用。首先,我创建一个游戏对象并添加它的主要相机。

1 个答案:

答案 0 :(得分:4)

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);