有两个类似的脚本可以做同样的事情(相机跟随播放器)。第一个是我写的,第二个是来自统一教程。哪一个更可靠,为什么?
第一
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;
}
答案 0 :(得分:3)
两个脚本之间没有可靠性这样的东西。虽然,我建议您使用第二个脚本。
第一个脚本正在根据播放器的位置指定相机的位置。它唯一没有分配的是z轴,你硬编码为-10
。游戏开始时,相机将移动到玩家所在的位置。相机的z轴将设置为-10
。每次更新都会发生这种情况。
第二个脚本正在为摄像机的位置指定播放器的位置和start
功能中的偏移值。当游戏开始时,在Start
功能中检索相机和播放器之间的偏移距离。在LateUpdate
功能中,检索玩家的位置并将偏移添加到其中,然后应用于相机的位置。
第一个脚本的结果是摄像机始终位于玩家所在的位置,但z轴始终设置为-10
。我相信你不希望z轴不移动。
第二个脚本的结果是相机总是在它和播放器之间具有相同的距离。即使您从编辑器移动相机或播放器,第二个脚本也会自动调整位置,并确保在游戏开始前相机与播放器之间的距离始终相同。我相信这是你正在寻找的,但我不会称之为可靠。第一个代码根本不适合您正在做的事情,第二个代码是。
答案 1 :(得分:1)
我敢打赌,第二个更可靠,因为它没有任何硬编码变量。但它也很容易被程序员和程序员使用,因为它根据你在场景中设置的位置计算你想要在任何方向给出的offSet。