【发布时间】:2019-01-25 01:46:10
【问题描述】:
我知道标题不是很清楚,但这是我的问题:
我有一个玩家(只是一个带有刚体、碰撞器和运动脚本的立方体),我有一个由 1 x 1 x 1 的小立方体(带有盒子碰撞器的立方体)组成的地板。
出于某种我不知道的原因,当我的玩家立方体掉落并试图与地板水平碰撞时,他只是逐步通过......但是希望他像垂直一样被立方体阻挡。任何帮助将不胜感激;)
这是一个立方体对象
这里是播放器对象
这是玩家穿过地板的 gif 图像
这是我的 c# 玩家移动脚本(我知道它很糟糕,但我更愿意把它放在这里以防它与我的问题有关):
void ApplyMovement()
{
transform.position += new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
}
如果您需要更多信息来帮助我,请告诉我,我会尽快提供。
【问题讨论】:
-
你是否为你的立方体和播放器附加了刚体组件?
-
不,我只是在播放器中添加了一个 ribidbody。我已经尝试向立方体添加刚体,但无济于事。
-
让我们看看你的
PlayerMovement脚本的其余部分。直接操纵transform.position会导致这样的问题(您应该改为施加力或操纵Rigidbody的速度,以便物理引擎可以做它的事情)。 FWIW,您不需要在地板上使用Rigidbody组件。这是为了让物理引擎能够操纵GameObject的运动,而它们已经拥有的BoxColllider足以让它们充当静态“地板”。
标签: c# unity3d collision mesh-collider