使相机跟随,可以恒定的高度和速度围绕球体飞行

时间:2015-05-15 12:47:58

标签: c# unity3d orbit

我需要制作一个脚本,可以让我的主摄像机以恒定的高度和速度围绕球体飞行。我需要用c#编写它,我有点新手,所以我需要一些帮助。

到目前为止,我刚刚编写了一个绕对象旋转的脚本,但我想用WASD控制相机。

到目前为止,这是我的轨道脚本

public class CameraOrbit : MonoBehaviour
{
    public GameObject target = null;  
    public bool orbitY = false;

    void Start () 
    {
    }

    void Update () 
    {
        if (target != null) 
        {
            transform.LookAt(target.transform);
            if(orbitY)
            {
                transform.RotateAround(target.transform.position, Vector3.up, Time.deltaTime * 10);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您有2个选项如何执行此操作:

选项#1是你开始的方式

选项#2:您可以将相机作为球体中心节点的子节点,然后只更改此父节点的euler角度,而不是围绕球体中心旋转相机:

using UnityEngine;

public class RotateChild : MonoBehaviour
{
   void Update()
   {
      if( Input.GetKey( KeyCode.W ) )
         transform.Rotate( 1, 0, 0 );
      if( Input.GetKey( KeyCode.S ) )
         transform.Rotate( -1, 0, 0 );
      if( Input.GetKey( KeyCode.A ) )
         transform.Rotate( 0, -1, 0 );
      if( Input.GetKey( KeyCode.D ) )
         transform.Rotate( 0, 1, 0 );
   }
}

在球体中心的节点上使用它。使相机成为这个节点的孩子。

enter image description here

具有比例尺5的球体:

enter image description here

附带脚本RotateChild的相机的父级:

enter image description here

这100%工作 - 我测试了它:)