N0x*_*xus 3 c# collision-detection rigid-bodies unity-game-engine
我想知道是否有一种方法可以使用Unity的RigidBody2D模拟以下代码行,而不是使用普通的RigidBody.
rigidbody.constraints = RigidbodyConstraints.FreezePositionX;
Run Code Online (Sandbox Code Playgroud)
我希望我的球员x位置在碰到某些东西时冻结.虽然我可以使用上述内容,但我需要将所有2D碰撞重新加工以处理3D碰撞.我宁愿避免的痛苦.
这是由于Box2D引擎用来做模拟.它不直接对刚体本身提供约束.然而它确实提供关节.
您想要了解的是Slider Joint 2D.这将允许您限制特定方向的移动.
默认情况下,它会冻结/约束X位置(即您可以向上或向下移动).通过修改角度,您可以更改允许对象移动的线.
所以,假设你想要垂直约束运动.在这种情况下,您添加一个如下所示的滑块关节:

这将允许特定的2D刚体仅向上或向下移动.这里有几点需要注意.关节与其他刚体有关,通常会添加到"连接的刚体"中.如果不这样做,它将在原点(0,0)隐式设置一个.当你可能没想到它时,这会产生将你受约束的身体折断的效果.可以通过适当更改"连接锚点"设置来修改此设置.
如果你希望水平约束刚体,你可以像以前一样,增加一个角度.将它设置为90度就可以了.

这是如何适合您的特定设置和代码,你必须尝试找出.但是为了帮助你,我在Github上创建了一个小型的演示场景.

它不会做太多,但通过与场景视图中的两个方块进行交互(尝试沿着轴进行平移),您可以了解它正在做什么.
| 归档时间: |
|
| 查看次数: |
6733 次 |
| 最近记录: |