【发布时间】:2016-12-21 22:09:14
【问题描述】:
我最近更新了我的 Unity(从 5.4.1f1 到 5.5.0f3),现在我的一个游戏中的 Rigidbody2D 似乎有些问题。
所以基本上我曾经使用此代码使我的游戏对象(玩家)变得难以处理并脱离物理控制:
Player.GetComponent<Rigidbody2D>().isKinematic = true;
这在 Unity 更新后无法正常工作,并且在将播放器设置为运动学时,它会一直朝着与“动态”(但无法控制)时相同的方向移动。注意:Unity 5.4.1f1 中并非如此。
所以我进入 Rigidbody2D 组件并注意到它发生了变化。 How my old Rigidbody2D looked like 和 How my new RigidBody2D looks like now
“kinematic”选项被移动到“body type”选项中,并且在运行时它确实使用“.isKinematic = true”字符串将body type更改为Kinematic(但它不能像前面提到的那样正常工作)。
所以我尝试在 runetime 中手动将 body type 值更改为“静态”,发现效果很好!
所以我的问题是:如何在代码中将正文类型更改为静态? (如“isKinematic”),以及 Rigidbody2D(和运动学?)的变化发生了什么
【问题讨论】:
-
这个问题的答案似乎需要了解 Unity 类库,所以请考虑添加 unity3d 标签。
-
@O.R.Mapper 你好。对 Unity/C# 和术语来说还是有点新,所以我不太确定想要吗?据我所知,我没有使用“Unity 类库”。游戏对象“Player”没有被标记,而是通过“Public Gameobject Player”在代码中控制(在Unity中绘制到组件框“Player”中)。这是你要求的吗?还是我没有任何意义。提前致谢
-
@KristofferRasmussen 他的意思是你的问题是 Unity 特有的,所以用
unity3d标记它(看起来 Scott 为你做了 :)) -
@LukeBriggs 哦,天哪。我很混乱。谢谢斯科特;)
-
@KristofferRasmussen:只要您使用
Rigidbody2D或Player之类的类型,您就在使用 Unity 类库(即 Unity 中包含的类集),因为这些类不可用没有统一。事实上,正如 Luke 所说,我指的是在此处标记您的问题 - 因为大多数了解 C# 的用户仍然不知道所提到的 Unity 类的细节。