Unity 2D C# - 对撞机不工作

Unity 2D C# - Collider not working

我正在 2D TopDown 游戏 Unity 5。碰撞根本不起作用。 玩家和障碍物都有一个 2D Collider 并且它们不是 Trigger。玩家有一个 2D 刚体运动学 设置为 false, 重力尺度等于。也许运动代码与它有关。 代码有点长,我只给大家看一下向上移动的代码:

if (Input.GetAxis ("Up") > 0) {

    if (movingDown == false) {

        posY += speed * Time.deltaTime;
        movingUp = true;
    }
} else {

    movingUp = false;
}

/.../

transform.position = new Vector3 (posX, posY, 0);

只要按下向上按钮,它就一直在设置位置的值。有办法解决这个问题吗?

我认为问题是你直接设置位置。所以在每一帧,你都在告诉 unity 对象应该在什么地方,它会覆盖从碰撞中计算出的位置。

要解决此问题,您需要修改移动代码以向刚体添加力并保持位置不变(请参阅刚体文档和函数 AddForce (https://docs.unity3d.com/ScriptReference/Rigidbody.html)