团结:玩家跳跃问题

本文关键字:问题 跳跃 玩家 团结 | 更新日期: 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

-跳转到立方体2, atCube1 = trueatCube2 = true

3-再次跳到cube1,它向左跳,因为仍然atCube2 = true。事实上,它首先向右跳,然后向左跳,因为你的if语句的顺序。只需将false值添加到布尔值即可修复它。