[좌표] 좌표에 대해서 알아봅시다(convertToWorldSpace) 절대좌표

|

[convertToWorldSpace]


convertToWorldSpace 함수에 대해서 알아봅시다.

예를 들어 게임을 제작시 배경하면을 스크롤 하는 기능을 넣을 시 배경화면에 자식노드를 넣고 처리할때 자식노드의 좌표를 알고 싶을때가 있다.

convertToWorldSpace는 부모 노드의 좌표를 기준으로 자식노드의 좌표를 구합니다.


               CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite * background = CCSprite::create("HelloWorld.png"); background->setPosition(ccp(0,0)); this->addChild(background); CCSprite *closeSprite = CCSprite::create("CloseNormal.png"); closeSprite->setPosition(ccp(10,10)); background->addChild(closeSprite); CCPoint convertPos = background->convertToWorldSpace(closeSprite->getPosition()); CCLog("%2.f %2.f",convertPos.x, convertPos.y); CCLog("%2.f %2.f",closeSprite->getPosition().x, closeSprite->getPosition().y);



출력결과

-230 -150 10 10


배경화면이 480*320인 스프라이트를 0,0 좌표에 add해줄시 화면의 중간에 위치하게 됩니다.





close 스프라이트는 배경화면 기준으로 10,10 에 위치하게 되며

배경화면은 -240,-160 에서 부터 그려지게 되므로

배경화면을 기준으로 한 절대 좌표는 -230, -150이 됩니다.


만약 배경화면의 좌표를 480,320 으로 수정하면 아래 그림처럼 보이며

로그 값은

250,170

10,10 이 됩니다.





여기서 알수 있듯이. convertToWorldSpace는 setposition으로 준 값과 관계없이

디바이스상에서 보여주는 좌표를 기준으로 좌표를 변형해줍니다.






Trackback 0 And Comment 0