在代码中将 Rigidbody2D 主体类型设置为“静态”?

Kri*_*sen 2 c# unity-game-engine

我最近更新了我的 Unity(从 5.4.1f1 更新到 5.5.0f3),现在我的一款游戏中的 Rigidbody2D 似乎出现了一些问题。

所以基本上我曾经使用这段代码来使我的游戏对象(玩家)变得不易处理并脱离物理控制:

Player.GetComponent<Rigidbody2D>().isKinematic = true;
Run Code Online (Sandbox Code Playgroud)

在 Unity 更新后,此功能无法正常工作,并且在将玩家设置为运动学后,它会继续沿与“动态”时相同的方向移动(但无法控制)。注意:Unity 5.4.1f1 中并非如此。

所以我进入 Rigidbody2D 组件并注意到它发生了变化。 我的旧 RigidBody2D 的外观以及我的新 RigidBody2D 现在的外观

“kinematic”选项已移至“body type”选项中,并且在运行时它确实使用“.isKinematic = true”字符串将主体类型更改为 Kinematic(但如前所述,它无法正常工作)。

因此,我尝试手动将主体类型值更改为“静态”,并发现效果非常好!

所以我的问题是:如何在代码中将主体类型更改为静态?(如“isKinematic”),以及 Rigidbody2D(和运动学?)的变化发生了什么?

Luk*_*ggs 6

Rigidbody 上的bodyType属性可能就是您正在寻找的:

Player.GetComponent<Rigidbody2D>().bodyType = RigidbodyType2D.Static;
Run Code Online (Sandbox Code Playgroud)

值得一提的是,如果 Unity 的次要版本之间的更新破坏了它,则可能会出现其他问题,但如果没有看到更多项目,我无法确定。