2009-11-10 4 views
1

화면을 터치하여 왼쪽 위 또는 오른쪽으로 움직일 수있는 캐릭터를 사용하여 게임을 만들었습니다. 캐릭터 위에 사과가 있습니다. 필요한 것은 사과가 떨어지면 그 캐릭터는 사과를 밀 수 있습니다. 다시 배구를하는 것처럼. 그게 문제 야. "경계 볼"에서 배운 것은 스프라이트에 모양과 본문을주고, 자동으로 충돌 할 것이다. 캐릭터에 모양과 몸을주고, 애니메이션이 작동하지 않고, 캐릭터가 움직이고 난 후 두 번째 그는 시작점으로 점프합니다. setPosition 또는 Action (MoveTo)을 사용하여 스프라이트를 쓸 때도 쓸모가 없습니다. body가 움직이지 않는 경우도 있습니다. touchmoved를 사용하여 body-> p를 설정하면 떨리는 것을 계속 유지합니다. 나는 단추를 풀어, 항상 "바깥에서"날아간다. .......... 누구나 내가 할 수있는 말이나 유사한 예 (예 : 배구와 비슷한 것), Plx 도움! !다람쥐 사용 문제

누구든지 나를 줄 수 있으면 감사하게 생각합니다.

+1

질문을 읽기 쉽게 만들어보세요. 그러면 더 많은 의견을 얻고 적절한 답을 얻을 기회가 늘어납니다. – nash

답변

5

스프라이트에 다람쥐 본문 및 모양을 추가하는 것이 가장 좋은 방법은 아닙니다. 화면의 관점에서 생각하지 않도록 노력하십시오! 대신 물리 본문 및 스프라이트에 대한 참조가 포함 된 컨트롤러를 만듭니다.

chipmunk와 같은 물리 엔진을 사용하면 다소 어려울 수 있습니다. 디버그 그리기를 활성화하는 데 도움이됩니다. 당신이 최선을 다 할 수있는 방법에 대해 살펴보십시오! Cocos2d chipmunk 예제에서 얻을 수있는 몇 가지 코드가 있는데, 보통의 cocos2d 다운로드와 함께 제공됩니다.

"접지"모양을 정적 모양으로 추가하고 중력을 설정 했습니까?

body->p = cpv(x,y);으로 본문을 움직이면 위치가 아닌 다른 개체 상태가 변경되지 않는 것이 문제입니다. 물리 엔진에, 그것은 당신이 물체를 텔레포트하는 것과 같습니다. 물체가 떨어지면 여전히 떨어질 것입니다.

이제 낙하물이 바닥에 닿지 않습니다. 속도가 빨라집니다. 당신은 다시 "텔레포트"합니다. 그러나 그것이 무엇이든 충돌 할 때까지 중력은 계속 떨어지는 속도를 계속 증가시킵니다.

개체를 다른 지점으로 이동하는 경우이 작업을 수행해야하는 경우 해당 개체의 모든 힘과 속도를 다시 설정해야합니다!

body->p를 사용하는 것보다 더 나은 방법이다 use these functions 행 :

  • 공극 cpBodySlew (cpBody * 본체 cpVect 볼때, cpFloat의 DT)
  • 공극 cpBodyUpdateVelocity (cpBody *이 본체 cpVect 중력이 cpFloat 댐핑 cpFloat DT)
  • 무효 cpBodyUpdatePosition (cpBody의 * 본체, cpFloat의 DT)

The documentation of these functions이 너무 산마루 아니라, 다른 다큐가있다 그곳에 대한 조언. 그것에게 google을주십시오 :-p 나는 아직이 기능을 사용하여 완전히 마스터하지 못했습니다. (나는 여전히 Chipmunk 주위를 돌아 다니려고 노력하고 있습니다.) 그러나 그것들에 대해 갈 길입니다. 또한

할 수 있습니다 (cpBodySlew 당신을 위해이 작업을 수행하지만)

1

최신 다람쥐 코드는 객체 사이에 피벗 조인트이를하고있다가 잡고 수에 직접 객체의 속도를 설정 (대신 body->p를 설정) 및 마우스 (터치) : ChipmunkDemo.c.

다음을 참조하십시오. Mouse interaction