Unity 2D物理关节。 NPE

时间:2015-01-04 15:25:18

标签: c# unity3d unityscript

更新 我发现刚体不会转向刚体2d。我已经尝试过手动投射,但是得到的错误说它无法完成......所以我的新问题是,如何让关节与rigidbody2D一起工作?

OP

学习Unity,我现在正在玩物理。我有一个小游戏正在运行而且它都很可爱,但是我遇到的问题就是二维物理。

我有各种各样的“板条箱”,每个都有自己的物理价值(重力等)。我还有一个“板条箱搬运工”,它(理论上)将板条箱从一个地方移到另一个地方。

Crate and Mover

然而,由于我的搬运工已经定义了他们可以移动到游戏空间的位置,所以当他们被移动时,我很难让板条箱“粘住”搬运工。

所以,我做了一些挖掘并发现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。我的箱子里有一个僵硬的人。就像我的动力一样,当我读到关节需要它们时。该对象不为null(使用Debug.Log检查...)。我唯一能想到的是联合本身是空的,这很奇怪!

有谁能解释我做错了什么?

1 个答案:

答案 0 :(得分:1)

2d物理仅适用于" 2d"类和方法,你应该使用FixedJoint2D或类似的" 2D"联合课程,如果该特定课程不存在