Unity 2D - 冻结轴和 AddForceAtPosition

Unity 2D - Freeze axis and AddForceAtPosition

我正在学习 Unity 2D,我想做这样的事情:

基本上角色会撞到 box/edge 然后摔倒。但!我想以某种方式锁定 X 轴。所以在现实中它看起来有点像它只是简单地旋转 90 度(有某种加速度)。

我尝试用 rigidbody2d 和 edgecollider 以及 AddForceAtPosition 来做,但我失败得很惨。

我真正想做的是锁定 "wall" 并在刚体的最顶部施加力,这样它就会向右掉落,但根本没有成功。

如有任何帮助,我们将不胜感激!

首先,我会锁定你不想在你的刚体上移动的旋转轴,然后,如果你的物体原点位于物体的地面/底部,你可以给物体添加旋转扭矩达到你想要的效果:) http://docs.unity3d.com/ScriptReference/Rigidbody.AddTorque.html

请记住,同样的逻辑适用于游戏中的物理学,也适用于现实生活中的物理学。只做一个铰链,将锚点和连接的锚点放在底部相同的位置,并为铰链设置一个限制。

墙:

铰链:

我将 Lower Angle 设置为接近 90 的角度,否则墙壁在下降时会变得不平坦。

记得为墙放置一个 Rigidbody2D 和一个 Box Collider。