团结:玩家跳跃问题
本文关键字:问题 跳跃 玩家 团结 | 更新日期: 2023-09-27 18:27:00
我有一段代码试图让玩家通过点击在 2 个盒子之间跳跃,只有立方体 1(左侧位置(和立方体 2(右侧(。
Move(( 函数的问题在于它开始从立方体 1 跳到立方体 2,然后立方体 2 跳回立方体 1,但从这一点开始,玩家从立方体 1 跳到与立方体 2 相反的左侧。
跳转功能正在工作,但我认为逻辑不正确。
移动:
void Move(){
int i = 0;
while ((isGrounded == true) && (i < 10)) {
if(atCube1 == true){
JumpRight();
}
if(atCube2 == true){
JumpLeft();
}
i++;
}
}
碰撞输入:
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之后做atCube1 = false;
(对立方体2也这样做(。您也可以在不碰撞任何东西时添加isGrounded = false;
。
1-你从立方体1开始,atCube1 = true
-跳转到立方体2, atCube1 = true
, atCube2 = true
3-再次跳到cube1,它向左跳,因为仍然atCube2 = true
。事实上,它首先向右跳,然后向左跳,因为你的if
语句的顺序。只需将false
值添加到布尔值即可修复它。