我有一个发生碰撞的场景。一旦碰撞发生,我希望相机从对象1平移到对象2.我试图在碰撞脚本中编写代码,但后来我意识到相机脚本将始终覆盖它,跟随对象1.所以现在我正在尝试用相机脚本编写它,但我不确定如何。
这是我的尝试:
public class CameraController : MonoBehaviour {
public GameObject player;
public GameObject player2;
private Vector3 offset;
// Use this for initialization
void Start () {
offset = transform.position - player.transform.position;
}
void OnCollisionEnter (Collision col) {
if (col.gameObject.name == "triggerCube") {
//SceneManager.LoadScene ("test2");
transform.position = player2.transform.position + offset;
}
else {
transform.position = player.transform.position;
}
}
}
即。如果碰撞发生,转换到玩家2的位置,但如果没有发生碰撞,请留在玩家1.然而,c#不允许这个虚空内的空虚,所以我希望有人有更好的解决方案吗? / p>
我可以让它在没有包含在更新版本中的情况下工作,但据我所知,在更新后期进行它对于相机工作非常重要。
答案 0 :(得分:0)
这里有一段代码片段,以便更好地理解:
public class CameraController : MonoBehaviour {
public GameObject player1;
public GameObject player2;
public GameObject focusPlayer; //either player1 or player2, initially player1
private Vector3 offset;
private void Start() {
//could use player1 here as well, it doesn't matter
offset = transform.position - focusPlayer.transform.position;
}
private void OnCollisionEnter(Collision col) {
if (col.gameObject.name == "triggerCube") { //layering? tagging? read up
focusPlayer = player2;
} else {
focusPlayer = player1;
}
}
private void LateUpdate() {
transform.position = focusPlayer.transform.position + offset;
}
这样,您可以添加更多玩家,不同的对象专注于相机,等等,所以整个事物将更加动态,更容易阅读或维护。