Unity 2D 物理关节。 NPE
Unity 2D Physics Joints. NPE
更新
我发现 rigidbody 不会转换为 rigidbody2d。我试过手动投射,但收到错误消息说无法完成...所以我的新问题是,如何让关节与 rigidbody2D 一起工作?
OP
正在学习 Unity,现在正在研究物理。我有一个小游戏 运行,它运行得很好,但我遇到的问题是 2D 物理。
我有各种 "crates" 并且每个都有自己的物理值(重力等)。我还有一个 "crate mover" 它将(理论上)将板条箱从一个地方移动到其他。
但是,由于我的搬运工已经定义了他们可以在游戏中移动到的位置 space,我在将板条箱移动到 "stick" 给搬运工时遇到了很大的麻烦。
所以,我四处挖掘并发现 Joints
- 特别是 FixedJoint
- 我认为如果我将一个关节连接到移动器并将其主体安装到板条箱,就可以解决这个问题?正确的?没有。
我收到这个错误:
NullReferenceException: Object reference not set to an instance of an object
RobertMover.OnCollisionEnter2D (UnityEngine.Collision2D coll) (at Assets/Scripts/RobertMover.cs:29)
其中涉及到以下代码:
void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log (coll.gameObject);
FixedJoint j = (FixedJoint)this.gameObject.AddComponent ("FixedJoint");
j.connectedBody = coll.gameObject.rigidbody; // problem line
}
鉴于我还在学习 Unity,我有点不确定什么是 null。我的板条箱有一个刚体。就像我的推动者一样,正如我读到的那样,关节需要它们。该对象不为空(使用 Debug.Log... 检查)。我唯一能想到的就是Joint本身是null,这很奇怪!
谁能解释我做错了什么?
2d 物理仅适用于“2d”classes 和方法,您应该使用 FixedJoint2D 或类似的“2D”关节 class 如果该特定关节不存在
更新 我发现 rigidbody 不会转换为 rigidbody2d。我试过手动投射,但收到错误消息说无法完成...所以我的新问题是,如何让关节与 rigidbody2D 一起工作?
OP
正在学习 Unity,现在正在研究物理。我有一个小游戏 运行,它运行得很好,但我遇到的问题是 2D 物理。
我有各种 "crates" 并且每个都有自己的物理值(重力等)。我还有一个 "crate mover" 它将(理论上)将板条箱从一个地方移动到其他。
但是,由于我的搬运工已经定义了他们可以在游戏中移动到的位置 space,我在将板条箱移动到 "stick" 给搬运工时遇到了很大的麻烦。
所以,我四处挖掘并发现 Joints
- 特别是 FixedJoint
- 我认为如果我将一个关节连接到移动器并将其主体安装到板条箱,就可以解决这个问题?正确的?没有。
我收到这个错误:
NullReferenceException: Object reference not set to an instance of an object
RobertMover.OnCollisionEnter2D (UnityEngine.Collision2D coll) (at Assets/Scripts/RobertMover.cs:29)
其中涉及到以下代码:
void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log (coll.gameObject);
FixedJoint j = (FixedJoint)this.gameObject.AddComponent ("FixedJoint");
j.connectedBody = coll.gameObject.rigidbody; // problem line
}
鉴于我还在学习 Unity,我有点不确定什么是 null。我的板条箱有一个刚体。就像我的推动者一样,正如我读到的那样,关节需要它们。该对象不为空(使用 Debug.Log... 检查)。我唯一能想到的就是Joint本身是null,这很奇怪!
谁能解释我做错了什么?
2d 物理仅适用于“2d”classes 和方法,您应该使用 FixedJoint2D 或类似的“2D”关节 class 如果该特定关节不存在