2012-08-12 6 views
0

iPhone 용 Cocos2D box2d 게임을 쓰고 있습니다. 저는 2 개의 역동 체를 가졌습니다. 외부로부터 힘이 가해지기를 희망하지만, 서로 힘을 가하지 않고 충돌을 감지하지는 않습니다. 어떻게해야합니까?iPhone cocos2d box2d 몸체 충돌 감지 기능 (강제 적용 제외)

또한 충돌 후 동일한 위치에서 함께 움직이기를 바랍니다. 어떻게해야합니까?

+0

귀하가 무엇을 요구하고 있는지 확실하지 않습니다. 이 내용을 다시 작성하거나 질문에 더 많은 내용을 추가하는 것이 좋습니다. –

답변

0

그들은 힘을 서로 적용되지 않습니다 당신이 충돌 필터링을보고 할 수 있습니다처럼

는 소리들이 충돌 감지합니다. 이 답변은 몸 동적 https://stackoverflow.com/a/11283206/735204

가 충돌 후 동일한 위치에 함께 이동 아마

공동 (예 weldjoint?) 어떤 종류의

의 충돌 필터링 인덱스를 변경하는 코드의 비트를 가지고 수동에서

는 : http://www.box2d.org/manual.html

관절 O를 세계에 각에 몸을 제한하는 데 사용됩니다 그. 게임의 전형적인 예로는 ragdolls, teeters 및 pulley가 있습니다. 관절은 다양한 방법으로 결합되어 흥미로운 동작을 만들 수 있습니다.

일부 관절은 동작 범위를 제어 할 수 있도록 제한을 제공합니다. 일부 조인트는 지정된 힘/토크가 초과 될 때까지 지정된 속도로 조인트를 구동하는 데 사용할 수있는 모터를 제공합니다.

여러 가지 방법으로 조인트 모터를 사용할 수 있습니다. 실제 위치와 원하는 위치의 차이에 비례하는 조인트 속도를 지정하여 모터를 사용하여 위치를 제어 할 수 있습니다. 모터를 사용하여 조인트 마찰을 시뮬레이션 할 수도 있습니다. 조인트 속도를 0으로 설정하고 작지만 중요한 최대 모터 힘/토크를 제공합니다. 그러면 모터는 하중이 너무 강해질 때까지 조인트가 움직이지 않게하려고 시도합니다.

+0

답변 해 주셔서 감사합니다. – ttotto

+0

하지만 이미 알고 있습니다. 1. 다른 범주 비트와 마스크 비트를 사용하는 경우 어떻게 충돌을 감지 할 수 있습니까? 2. 나는 이미 거리 관절을 사용하려했지만, 때때로 스프라이트의 위치는 몸의 위치와 차이가 있습니다. 그래서 그들은 때로는 분리되어 있습니다. – ttotto

+0

오 - 충돌에 신체가 반응하지 않고 충돌을 감지하려면 먼저 센서를 사용하십시오. http://www.iforce2d.net/b2dtut/sensors –

0

마지막 답변을 작성해 주셔서 죄송합니다. 작성해 주시기 바랍니다.

어떨까요?

bodyDef.isSensor = true; 

및 충돌을 감지하기 위해 ContactListener를 사용하십시오. Box2d for collision detection

또한 box2d 필터를 사용할 수 있습니다. 예 :

주의 : groupIndex가 < 인 경우 동일한 신체가 서로 충돌하지 않습니다. 그것이 당신이 필요로하는 것입니다.

b2Filter bodyFilter; 
bodyFilter.groupIndex = -1; 
bodyFilter.categoryBits = 0x0002; 



fixtureDef.filter = bodyFilter;