2013-04-12 2 views
0

플랫폼이 화면의 오른쪽에서 화면의 왼쪽으로 이동하는 플랫폼 게임을 만들려고합니다. 그리고 영웅은 화면 중간에 초기화됩니다.Cocos2dx : 움직이는 플랫폼 게임에 대한 도움말

플랫폼은 b2_kinematicBody이고 영웅은 b2_dynamic 본문입니다. 일단 플랫폼에서 뛰어 내리면 영웅은 플랫폼의 왼쪽뿐만 아니라 화면의 왼쪽으로 움직이기 시작합니다.

내 질문은 : 영웅이 화면의 왼쪽으로 이동하는 것을 어떻게 막을 수 있습니까? 나는 모든 플랫폼이 그의 뒤를 향해 왼쪽으로 움직이는 것처럼 그가 걷고 있다는 인상을주기 위해 항상 영웅을 화면 중앙에두고 싶다.

도와주세요. 모든 지침을 부탁드립니다. 감사합니다

답변

1

귀하의 모든 시나리오 플랫폼/개체에 대한 주 공극 CCNode이있을 수 있으며 그 안에는 영웅이 또한 들어갑니다 CCSprite.

그런 다음 영웅의 움직임에 따라 공백을 이동하면 영웅 스프 라이트가 항상 가운데에 오도록 (시나리오 가장자리에 접근하지 않는 동안) 시나리오가 대신 이동됩니다. 이게 뭔가 .-

float positionX = heroSprite->getPosition().x; 
if (positionX > 0) { 
    float offset = positionX; 
    voidNode->setPosition(ccp(MAX(-offset, -TOTAL_LEVEL_WIDTH + CANVAS_WIDTH), voidNode->getPosition().y)); 
} 

희망이 있습니다.

참고 :이 코드는 화면의 중심이 점 (0, 0)에 있다고 가정합니다.

+1

멋진 해결책은 아닙니다. –

+0

실제로 영웅 -> SetTransform (b2Vec2 (, 영웅 - GetPosition(). y), 영웅 -> GetAngle()) 나를 위해 해줬습니다 ... –

1

전체 장면의 컨테이너로, 다른 하나는 영웅 및 기타 팀원의 컨테이너 (존재하는 경우)로 필요합니다. 2 CCLayer.

장면 레이어의 테두리가 화면 외부로 이동하는지 여부를 계산해야합니다. 그것이 스크린 경계병에 도달했다면, 당신의 영웅을 대신 이동하십시오. 그렇지 않으면 영웅을 롤 레이어의 중심에두고 장면 레이어를 이동합니다.

문자와 장면을 동일한 레이어에 넣지 마십시오. 계산이 훨씬 복잡해지기 때문입니다.

관련 문제