我有一段代码试图让玩家通过点击仅在方 block 1(左侧位置)和方 block 2(右侧)之间跳转。
Move() 函数的问题是它开始从方 block 1 跳到方 block 2,然后方 block 2 跳回方 block 1,但是从这一点开始,玩家从方 block 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;
}
}
最佳答案
你应该在它离开 cube1 之后制作 atCube1 = false;
(也为 cube2 做)。您也可以添加 isGrounded = false;
当它不碰撞任何东西时。
1-你从 cube1 开始,atCube1 = true
2-跳转到 cube2,atCube1 = true
,atCube2 = true
3- 再次跳转到 cube1,它向左跳,因为 atCube2 = true
。事实上,由于 if
语句的顺序,它首先向右跳然后向左跳。只需将 false
值添加到 bool 值即可修复它。
关于c# - 统一: Player Jumping Issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34300187/