【发布时间】:2015-12-15 21:58:01
【问题描述】:
我有一段代码试图让玩家通过点击在 2 个盒子之间跳跃,只有 Cube 1(左侧位置)和 Cube 2(右侧)。
Move() 函数的问题是它开始从 Cube 1 跳到 Cube 2,然后 Cube 2 回到 Cube 1,但是从这一点开始,玩家从 Cube 1 跳到左侧,与立方体 2。
跳转功能正常,但我认为逻辑不正确。
移动:
void Move(){
int i = 0;
while ((isGrounded == true) && (i < 10)) {
if(atCube1 == true){
JumpRight();
}
if(atCube2 == true){
JumpLeft();
}
i++;
}
}
OnCollisionEnter:
void OnCollisionEnter (Collision col)
{
Debug.Log("OnCollisionEnter");
if (col.gameObject.name == "Cube 1"){
Debug.Log ("++++++ C U B E 1 H I T ++++++++");
atCube1 = true;
isGrounded = true;
}
if(col.gameObject.name == "Cube 2"){
Debug.Log ("Cube 2 hit");
atCube2 = true;
isGrounded = true;
}
}
【问题讨论】:
-
我已经修正了你的格式。两件事:1)你不需要
== true。 2) 如果atCube1和atCube2都是真的呢? -
您的 JumpRight 函数是否会重置 atCube1 和 isGrounded 字段值?
-
嗨@Wai,感谢您的回复,我认为atCube1和2不能同时为真,因为这是在OnCollisionEnter函数中,请看下面,void OnCollisionEnter (Collision col) { Debug.Log("OnCollisionEnter"); if (col.gameObject.name == "Cube 1"){ Debug.Log ("++++++ C U B E 1 H I T ++++++++"); atCube1 = 真; isGrounded =真; } if(col.gameObject.name == "Cube 2"){ Debug.Log ("Cube 2 hit"); atCube2 = 真; isGrounded =真; } }
-
嗨@Neil,没有跳转函数不会重置 atCube1 和 isGrounded ,这些值在 OnCollisionEnter() 函数中设置为 true。应该在 OnCollisionExit() 函数中将它们设置为 false 还是在哪里?谢谢!
-
... 您可以通过在多维数据集 1 上将
atCube2设置为 false 并在多维数据集 2 上将atCube1设置为 false 来轻松检查。