【发布时间】:2016-08-23 16:47:40
【问题描述】:
我有一个发生碰撞的场景。一旦发生碰撞,我希望相机从对象 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# 不允许在 void 的东西中使用这个 void,所以我希望有人对我有更好的解决方案?
我可以让它在不包含在后期更新中的情况下工作,但据我了解,在后期更新中包含它对于相机工作非常重要。
【问题讨论】:
-
有一个 GO 成员变量,将其称为“targetToFollow”或其他名称,然后在 cam 的 LateUpdate() 中遵循它。发生碰撞时,将变量分配的 GO 更改为另一个对象(可能通过公共属性)。问题是您想如何应用该更改?一个很酷的动画重新聚焦到一个新的目标等,或者只是换掉跟随的对象?此解决方案适用于后一种情况
-
必须是 GO 变量吗?我对 c# 很陌生,我还没有使用过这些。不过,你的想法是合理的。