gpt4 book ai didi

c# - RigidBody2D 卡住 X 位置

转载 作者:行者123 更新时间:2023-11-30 14:30:32 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以使用 Unity 的 RigidBody2D 来模拟以下代码行,而不是使用普通的 RigidBody。

rigidbody.constraints = RigidbodyConstraints.FreezePositionX;

我希望我的玩家 x 位置在与某物碰撞时卡住。虽然我可以使用上面的方法,但它需要我重新处理所有 2D 碰撞才能处理 3D 碰撞。我宁愿避免的痛苦。

最佳答案

这是由于使用 Box2D 引擎进行模拟。它不直接对刚体本身提供约束。但是它确实提供关节。

你要查的是a Slider Joint 2D .这将允许您限制特定方向的移动。

默认情况下,它会卡住/限制 X 位置(即您只能向上或向下移动)。通过修改角度,您可以更改允许对象移动的线。

假设您想要限制垂直方向的移动。在这种情况下,您添加一个如下所示的 slider 关节:

这将允许特定的 2D 刚体仅向上或向下移动。这里有几件事需要注意。关节与其他刚体相关,您通常会将其添加到“连接的刚体”中。如果不这样做,它会在原点 (0,0) 隐式设置一个。这将产生将受约束的 body 卡在那里的效果,而这可能是您意想不到的。这可以通过适当更改“连接的 anchor ”设置来修改。

如果你想水平约束你的刚体,你可以像以前一样做,增加一个角度。将其设置为 90 度即可。

这如何适合您必须尝试弄清楚的特定设置和代码。但为了帮助您,我在 over on Github 创建了一个小型演示场景。 .

它不会做太多事情,但通过与场景 View 中的两个正方形交互(尝试沿轴平移它们),您就会知道它在做什么。

关于c# - RigidBody2D 卡住 X 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22579017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com