Unity:玩家跳跃问题

时间:2015-12-15 21:58:01

标签: c# unity3d

我有一段代码试图通过点击让玩家在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 个答案:

答案 0 :(得分:0)

离开cube1后你应该atCube1 = false;(也可以为cube2做)。此外,您可以在isGrounded = false;没有发生任何冲突时添加。{/ p>

1 - 你从cube1,atCube1 = true

开始

2 - 跳转到cube2,atCube1 = trueatCube2 = true

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