2010-06-20 4 views
1

iPhone Cocos2D 게임에서 가로 및 세로 방향을 모두 지원하려고하지만 좌표를 올바르게 변환하는 데 문제가 있습니다.iPhone에서 Cocos2d를 사용하여 다양한 방향 지원하기

여기까지 제가 지금까지하고 있습니다.

저는 장치 방향에 관계없이 제가 항상 세로로 유지하는 GameWorld 레이어를 가지고 있습니다. 다음 코드는 UIDeviceOrientationLandscapeLeft에 대한 내 DeviceRotated 이벤트에 있습니다. ('자기'내 게임 세계 층이다)

[self runAction:[CCMoveTo actionWithDuration: 0.25f position:ccp(80, 0)]]; 

[self runAction:[CCRotateTo actionWithDuration:0.25f angle:90]]; 

나는 스프 좌표 변환 내 Sprite 클래스에서 다음을 사용하기를 바라고 된 각 방향에 대해 서로 다른 코드를 작성하지 않아도 .

CGPoint spriteLoc = ccp(0,0); 

CGPoint translatedSpriteLoc = [self.parent convertToNodeSpace:spriteLoc]; 

self.position = translatedSpriteLoc; 

그러나 이것은 작동하지 않습니다.

왼쪽 하단 모서리에 스프라이트가있는 세로 모드 인 경우 장치를 왼쪽으로 회전하면 스프라이트가 오른쪽 아래에 나타납니다. 스프라이트가 마치 풍경처럼 왼쪽 아래에있는 것처럼 보이게하려고합니다.

좌표가 잘못되었거나 좌표를 더 잘 변환 할 수 있습니까?

답변

0

방향 전환시 "점프 컷"을 신경 쓰지 않는다면 Cocos2d에서 내장 오리엔테이션 지원을 사용할 수 있습니다. this post at the Cocos2d forums을 참조하십시오.

그러나 오리엔테이션이 필요하다면 위의 내용을 따라 뭔가를해야 할 수도 있습니다.

자세한 내용이 없으면 접근 방식이 작동하지 않는 이유는 어렵지만 내 으로 추측합니다. 방향을 변경하지 않으면 결과로 설명하는 스프라이트 위치를 볼 수 있습니다. 왼쪽 아래에서 왼쪽으로 세로로 보았을 때 왼쪽 아래로 볼 수 있습니다. 즉, GL 공간에서 같은 점입니다 : (0,0). GameWorld Layer의 "원점"을 이동하고 회전시켜야합니다.

전체 화면 이미지를 레이어에 추가하여 회전 할 때 실제로 어떤 현상이 나타나는지보십시오. 그게 당신이해야 할 일을 좁히는 데 도움이 될 것입니다.

관련 문제