2011-02-13 1 views
1

저는 Chipmunk cocos2d를 사용하여 궁극적으로 충돌하는 입자가 소리를내는 소리 생성 게임이 될 것입니다. 그러나 지금 당장 나는 문제에 봉착하고있다.다람쥐 개체가 빠른 속도로 바닥을 통과합니다. 도움?

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)accel 
{ space->gravity = cpvmult(cpv(accel.x, accel.y), 10000.0f); // originally 100.0f 
} 

I을 : 템플릿 "공을 수신 거부"

예에서

는 들어오는 가속도계 스트림에 승수 (100.0f 정도)하지만 일을 정말 빨리 내가 ​​그것을 본격 시작하고 반응을 얻는 매우 낮다 dt을 매우 작게 만들어 가속도계를 1/240 초 정도 폴링하여이를 개선 할 수 있음을 발견했습니다.

가장 좋은 방법입니까? Chipmunk에게 "외면하는 것,이 일들이 빠르게 움직인다"고 말할 수있는 또 다른 방법이 있습니까?

+0

Box2d는 역동적 인 몸체를 '탄환'(http://www.box2d.org/manual.html#_Toc258082973)으로 표시 할 수 있습니다. 통로. 나는 Chipmunk에 익숙하지 않지만 비슷한 개념이 어딘가 깊은 곳에 묻혀있을 수 있습니까? –

+0

예, 아마도 Box2d가 여기에 대한 답변이 될 것입니다. – buildsucceeded

답변

3

일반적으로 많은 물리 엔진은 속도에 비해 상대적으로 빠르게 움직이는 물체 간의 충돌에 어려움이 있습니다. 나는 Chipmunk의 세부 사항을 모르지만 문제는 특정 시간 간격에 교차하는 객체에 대해 검사가 수행된다는 것을 의미합니다. 개체가 빠르게 이동하고 작 으면 충돌이 발생하는 시간 간격을 건너 뛸 수 있습니다.

가장 쉬운 두 가지 해결책은 더 짧은 시간 간격을 사용하거나 두 개체 중 하나를 더 크게 만드는 것입니다. 너 어떻게 바닥을 대표하니? 너가 두꺼운 직사각형으로 그것을 대표 할 수 있으면, 또한 문제를 감소시켜야한다.

더 어려운 해결 방법은 더 복잡한 교차 알고리즘을 사용하는 것입니다 (예 : bounding capsules). 두 샘플 사이의 구에 의해 가로 지르는 공간 영역을 나타낼 수 있습니다. API가 아직 이것을 지원하지 않는다면 상당히 많은 양의 수학과 수정이 필요합니다.

+0

고마워, 그게 내가 의심 한거야. 더 높은 프레임 속도 + 거대한 경계 객체 = 더 나은 결과. – buildsucceeded

+0

그러나이 작업을 백업 한 후에도 경계 대상이 아무리 큰 경우에도 바닥을 통과 할 수 있습니다. 와우, 내 튀는 공이 ... 영원히 떨어지는 군. 오. – buildsucceeded