지난번 연재 8-1과 이어집니다.
게임 개발에 사용할 리소스를 추가 하도록 하겠습니다.
다음 주소에서 8.3 리소스 파일을 다운로드합니다.
https://download.hanbit.co.kr.co.kr/exam/cocos2d-x/
Figure 12 리소스 추가
<북극곰 탈출> 게임을 만드는 데 필요한 리소스들이 준비되어 있습니다(스크린샷은 초고 화면이므로 7.3으로 나오지만 실제 파일은 8.3이 맞습니다).
모든 파일을 복사하여 polarBear의 Resources 폴더에 붙여넣기를 합니다.
Figure 13 리소스 추가
polarBear프로젝트의 Resources 폴더에 리소스들을 복사하였습니다.
[5.2]를 참고하여 프로젝트의 리소스를 디바이스에 맞추어 참조할 수 있도록 해주겠습니다.
리소스 폴더에 파일들을 위치시켰으면 디바이스의 해상도에 따라 리소스 폴더를 참조하도록 합시다.
북극곰 탈출 게임은 가로로 게임화면을 구성할 것 입니다.
[5.2]와는 다른 점은 width 와 height 수치가 바뀌었습니다.
applicationDidFinishLaunching() 메소드를 찾아 아래와 같이 수정합니다.
----------Appdelegate.cpp----------
…생략…
typedef struct tagResource
{
Size size;
char directory[100];
}Resource;
static Size designResolutionSize = Size(480, 320);
static Resource smallResource = { Size(480, 320), "iphone" };
static Resource mediumResource = { Size(960, 640), "iphone_retina" };
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::createWithRect("My Game", Rect(0, 0, designResolutionSize.width, designResolutionSize.height));
director->setOpenGLView(glview);
}
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL);
Size frameSize = glview->getFrameSize();
// frameSize가 smallResource보다 작거나 같으면 smallResource를 사용한다.
std::vector<std::string> resDirOrders;
if (frameSize.height <= smallResource.size.height){
resDirOrders.push_back(smallResource.directory);
director->setContentScaleFactor(smallResource.size.height / designResolutionSize.height);
}
// frameSize가 smallResource보다 크면 같으면 mediumResource를 사용한다.
else{
resDirOrders.push_back(mediumResource.directory);
director->setContentScaleFactor(mediumResource.size.height / designResolutionSize.height);
}
FileUtils::getInstance()->setSearchResolutionsOrder(resDirOrders);
// turn on display FPS
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
// create a scene. it's an autorelease object
auto scene = HelloWorld::createScene();
// run
director->runWithScene(scene);
return true;
}
위 코드는 디바이스의 높이를 구분하여 비율을 계산하고 리소스 참조 폴더를 수정하였습니다.
비주얼 스튜디오에서 개발을 진행하는데 480 x 320 해상도를 사용할 것이기에 iphone폴더를 참조 하도록 하였습니다.