2011-03-19 2 views
0

내 cocos2d-iphone 프로젝트에서 Chipmunk를 사용하여 물리 모델을 제공하고 있습니다. 또한, Chipmunk에 대한 SpaceManager obj-c 래퍼를 사용하고 있습니다.Cocos2d iPhone Chipmunk 동기화 문제

저는 Chipmunk에게 일정 시간을 알려주고 있습니다.

지금 문제는 물리 시뮬레이션이 게임 루프와 동기화되지 않는다는 것입니다. 즉, 게임 플레이의 타이밍은 FPS에 따라 다릅니다 (구체적으로 시뮬레이터, 장치 또는 최신 장치에서 실행 중인지에 따라 다릅니다).

이것은 게임 플레이에 치명적인 영향을 미칩니다. 예를 들어 FPS가 어떤 이유로 느려지면 물리 시뮬레이션이 크롤링되고 오브젝트 이동이 훨씬 느려집니다. 이것은 레벨 디자인을 거의 불가능하게 만듭니다!

도와주세요!

답변

0

게임에서 두 개의 루프를 사용해 볼 수 있습니다. Chipmunk를 자극하는 데 NSTimer을 사용하고 그림을 그리려면 CADisplayLink 만 사용하십시오. 모든 다시 그리기에서 물체의 현재 위치를 물리 모델에 문의하십시오.

0

따라서 Spacemanager 출혈 버전 (출처에서)을 사용하여이 문제를 해결했습니다. 그것은 마지막 recalc 이후 누적되었을 수있는 여분의 시간을 "합산"하고 그것을 설명하는 향상된 단계 함수 (constantDt를 사용하는 한)를가집니다.

고마워요! MobileBros!