타일링 된 맵 편집기 tmx 파일에서 움직이는 타일을 만들려고합니다. 나는 자신의 레이어에 움직이는 타일이 있으며, 단순히 움직 이기만하면 특정 y에 도달하고 뒤로 이동하는 등의 작업을 수행합니다.이동 플랫폼? Cocos2d and Tiled
나는 조금만 둘러 보았습니다. 이것을 달성하기위한 명확한 방법으로,하지만 내 노력은 성공하지 못했습니다.
일부 방법으로 시도했습니다. here.
저는 아직 일반적으로 cocos2d 개발에 익숙하지 않으므로 이에 대한 통찰력을 얻었습니다. 시간 내 주셔서 대단히 감사합니다. 질문이 있으시면, 물어보십시오! :) 도움이된다면 이동하려는 타일이 큰 T 자 모양입니다.
최종 업데이트 :
(미래에 누구나 쉽게 내 솔루션을 (전체 답은 아래에있다) 나는 위의 링크에 내 계층으로 반복 방법을 가지고 여기서 찾을 수 있습니다 찾을 수 있도록 제거 더 관련이없는 코드).
좋아, 그래서 마침내 내가 원하는 방식에 가깝게 다가왔다. 나는 이것이 정확히 그것을하는 가장 이상적인 방법이라고 생각하지 않는다. 그러나 이것이 내가 가진 것이다.
참고 :이 기능을 사용하려면 디버그 모드에서 앱을 실행해야합니다. 그렇지 않으면 플레이어가지면에서 떨어지게됩니다 (적어도 나를 대신해 ..).
모든 프레임마다 특정 기능을 호출하는 업데이트 기능이 있습니다. (충돌 확인, 플랫폼 이동 등).
그 업데이트 기능 내 이동 플랫폼 함수를 호출.. 이런
는 :
[self movePlatforms:0.1];
이 .. 그러니까 기본적으로
-(void)movePlatforms: (ccTime) dt{
if(goingDown){
moveCount++;
}else{
moveCount--;
}
CGSize s = [movingTiles layerSize];
for(int x=0; x<s.width;x++) {
for(int y=0; y< s.height; y++) {
CCSprite *tile = [movingTiles tileAt:ccp(x,y)];
if(goingDown){
CGPoint newPosition = ccp(tile.position.x, tile.position.y - 1);
tile.position = newPosition;
if(moveCount >= 100){
goingDown = false;
}
}else{
CGPoint newPosition = ccp(tile.position.x, tile.position.y + 1);
tile.position = newPosition;
if(moveCount <= 0){
goingDown = true;
}
}
}
}
}
, 나는 INT의 moveCount을 내 movePlatforms 기능 생성 내 movePlatform 함수가 호출 된 횟수를 추적하는 BOOL goingDown. 따라서 100 회의 통화가 끝나면 방향이 전환됩니다.
(이 경우 정상적으로 작동합니다.이 경우 충돌 감지기와 같은 것이 필요할 수 있습니다.)
if (CGRectIntersectsRect([someSprite boundingBox], [someSprite boundingBox])) {
//Do something
}
는 희망이 내가이 나를 위해 꽤 두통 있었는지, 미래에 사람을 작동하고,이 도움이된다면 그것은 아마 제대로되지 않았거나 그것을 할 수있는 더 나은 방법이 있지만, 너 너 정말 멋지다!
답장을 보내 주셔서 감사합니다. 이것은 완전히 나를 위해 작동하지 않았지만 tile.position을 업데이트하는 것에 대한 조언은 앞으로 나아갈 단계입니다. 이 작업을 완전히 마치면 업데이트를하겠습니다. – JoeyMaru