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)
我正在 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)