Unity中的Camera Controller

时间:2018-04-03 10:16:49

标签: c# unity3d

有两个类似的脚本可以做同样的事情(相机跟随播放器)。第一个是我写的,第二个是来自统一教程。哪一个更可靠,为什么?

第一

   public class CameraController : MonoBehaviour {

   public GameObject player;

   void LateUpdate () {

    transform.position = new Vector3 (player.transform.position.x,  player.transform.position.y,-10f);

   }
   }

第二

    public GameObject player;       

    private Vector3 offset;

    void Start () 
    {
    offset = transform.position - player.transform.position;
    }

    void LateUpdate () 
    {

    transform.position = player.transform.position + offset;
    }

2 个答案:

答案 0 :(得分:3)

两个脚本之间没有可靠性这样的东西。虽然,我建议您使用第二个脚本。

第一个脚本正在根据播放器的位置指定相机的位置。它唯一没有分配的是z轴,你硬编码为-10。游戏开始时,相机将移动到玩家所在的位置。相机的z轴将设置为-10。每次更新都会发生这种情况。

第二个脚本正在为摄像机的位置指定播放器的位置和start功能中的偏移值。当游戏开始时,在Start功能中检索相机和播放器之间的偏移距离。在LateUpdate功能中,检索玩家的位置并将偏移添加到其中,然后应用于相机的位置。

第一个脚本的结果是摄像机始终位于玩家所在的位置,但z轴始终设置为-10。我相信你不希望z轴不移动。

第二个脚本的结果是相机总是在它和播放器之间具有相同的距离。即使您从编辑器移动相机或播放器,第二个脚本也会自动调整位置,并确保在游戏开始前相机与播放器之间的距离始终相同。我相信这是你正在寻找的,但我不会称之为可靠。第一个代码根本不适合您正在做的事情,第二个代码是。

答案 1 :(得分:1)

我敢打赌,第二个更可靠,因为它没有任何硬编码变量。但它也很容易被程序员和程序员使用,因为它根据你在场景中设置的位置计算你想要在任何方向给出的offSet。