2015-01-04 2 views
0

Обновление Я обнаружил, что жесткое тело не бросается в жесткое тело 2d. Я пробовал вручную кастинг, но получаю ошибки, говорящие, что это невозможно ... Так что мой новый вопрос: как я могу заставить суставы работать с rigidbody2D?Unity 2D Физические суставы. NPE

OP

Обучение Единство и теперь играет с физикой. У меня есть небольшая игра, и все это прекрасно работает, но у меня возникают проблемы с кругом вокруг 2D-физики.

У меня есть разные «ящики», каждый из которых имеет свои физические значения (гравитация и т. Д.). У меня также есть «ящик», который (теоретически) будет перемещать ящики из одного места в другое.

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, я немного не уверен относительно того, что нулевой. У моего ящика жесткое тело. Как и мой двигатель, когда я читаю, что суставы требуют их. Объект не является нулевым (проверяется с помощью Debug.Log ...). Единственное, что я могу подумать, это то, что сам сундук является нулевым, что очень странно!

Может ли кто-нибудь объяснить, что я делаю неправильно?

ответ

1

2d физика работает только с «2D» классов и методов, вы должны использовать FixedJoint2D или сопоставимого «2D» совместный класс, если этот конкретный один не существует

+0

Да жаль. Выяснил это. К сожалению, нет FixedJoint2D. Таким образом, вместо этого выбрал дистанционный шлейф. Спасибо за вашу помощь. – LokiSinclair

Смежные вопросы