2015-01-04 2 views
0

업데이트 rigidbody가 rigidbody2d로 캐스팅하지 않는다는 것을 발견했습니다. 수동으로 캐스팅을 시도했지만 완료 할 수 없다는 오류가 발생했습니다. 그래서 새로운 질문은 rigidbody2D로 작업하기 위해 관절을 어떻게 얻을 수 있습니까?Unity 2D 물리 조인트. NPE

OP

학습 유니티와 지금은 물리와 함께 연주하고있다. 작은 게임을 실행하고있어 모두 멋지게 작동하지만 내 머리를 감싸는 데 문제가있는 것은 2D 물리입니다.

나는 다양한 "상자"를 가지고 있으며 각자 고유의 물리 값 (중력 등)을 가지고 있습니다. 또한 이론적으로 상자를 한 곳에서 다른 곳으로 옮길 수있는 "상자 이동 자"도 있습니다. 때문에 내 이삿짐에 그러나

Crate and Mover

는, 그들이 게임 공간에, 나는 끔찍한 문제가 상자가 그들이 이동하고있는 발동기에 "스틱"때 얻는 데에 이동할 수 있습니다 위치를 정의하는 데.

따라서 파고 들었습니다. - 특히 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 
} 

이보고, 나는에 관해서는 좀 확실 해요 무엇 null 내 상자에 경직되어있어. 나의 발동기가 그렇듯이, 관절이 그들을 필요로한다는 것을 읽을 때. 개체가 null이 아닙니다 (Debug.Log ...로 확인). 내가 생각할 수있는 유일한 것은 Joint 자체가 null이라는 것입니다. 이것은 매우 이상합니다!

내가 뭘 잘못하고 있는지 설명 할 수 있습니까?

답변

1

2D 물리은 "2D"클래스와, 당신은 FixedJoint2D 또는 비교 "2D"을 사용한다 방식에서 공동 클래스 특정 일이 존재하지 않는 경우

+0

네, 죄송합니다. 그걸 알아 냈어. 불행히도 FixedJoint2D가 없습니다. 대신에 Distance joint를 선택했습니다. 당신의 도움을 주셔서 감사합니다. – LokiSinclair