OnCollisionEnter在Unity3D中无法正常工作

时间:2014-07-31 11:23:34

标签: c# unity3d

我尝试复制不可能的游戏:http://flukedude.com/theimpossiblegame/

红色正方向向右移动,当玩家看到蓝色正方形时,他应该跳跃。如果他将与广场的左侧(另一个方块“ WallCollider ”)发生碰撞,游戏就结束了。它有效,但如果玩家将跳到左上角,游戏也将结束。无法理解,为什么。

void OnCollisionEnter(Collision collision)
{
    if (collision.transform.name == "WallCollider")
        Debug.Log ("You lose");
}

enter image description here

红色和蓝色方块和WallCollider都有盒子对撞机。只有红色方块才有刚性。

我像这样移动红色:

public GameObject player;

    public float speed = 5.0f;
    public float jumpPower = 10.0f;

    void Start ()
    {
        player = (GameObject)this.gameObject;
    }

    void Update ()
    {
        player.transform.position +=
        player.transform.right * speed * Time.deltaTime;
    }

我在二维环境中使用3d物理。所有脚本都位于红色方块(播放器)上。

蓝盒有一个盒子对撞机。但在附近我还有WallCollider(Cube),它也有一个盒子对撞机,但它的高度稍微低一点。

1 个答案:

答案 0 :(得分:2)

首先,碰撞器具有穿透距离,因此通过跳跃左上角,玩家对撞机可以将其穿透到墙壁对撞机。尝试在编辑/项目设置/物理中减少穿透距离。

同样有助于减少固定时间步长以提高物理模拟的准确性(查找编辑/项目设置/时间)。