Cocos2d v3.3 화면 방향 전환

  • 아직 v3.3은 베타 버전이므로 방식이 달라질 수 있습니다.

cocos2d-swift에서는 버전이 마이너 업데이트 인데도 불구하고, 0.1이 올라가면 올라갈수록 기능도 많이 생기고 내부 구조도 많이 바뀌고 있다. 편하자고 구 버전만 사용할 수 없다. 


v3.3에서는 Metal renderer, Packages, Android 이렇게 아주 막강한 기능이 추가 될 예정이다. 또한 화면 방향 설정 하는것도 바뀌었다. 


아무리 Targets > Deployment Info > Device Orientation 에서 Portrait 로 설정을 해도 세로 화면으로 고정되질 않는다.


v3.3에서는 안드로이드를 Apportable로 포팅하는게 아니라, Xcode에서 바로 빌드를 할 수 있게 지원하게 만들면서 스크린모드, 화면 방향, 타블릿 스케일 설정을 configCocos2d.plist 파일로 분리해서 사용한다.



간단하게 Published-iOS > configCocos2d.plist 에서 CCSetupScreenOrientation를 CCScreenOrientationLandscape에서 CCScreenOrientationPortrait로 변경하면 된다. 단, 코드가 아니라서 자동완성을 지원하지 않는다.




두 가지 설정만 바꾸면 세로 화면으로 시작하는 게임을 만들 수 있다. 

Posted by KraZYeom

댓글을 달아 주세요

v3 미만 버전에서는 다른 방법이 필요했지만, v3에서는 좀 더 편하게 CCSpriete의 이미지 변경을 지원한다. 


기존 CCSprite에서 spriteFrame만 CCSpriteFrame으로 변경해주면 된다. 


self.gameOverPanel.spriteFrame = [CCSpriteFrame frameWithImageNamed:@"LevelComplete.png"];


Posted by KraZYeom

댓글을 달아 주세요

RayWenderlich의 캔디 크러시 따라 만들기를 SpriteKit에서 cocos2d v3로 포팅을 하고 있는데 UIGesture 부분이 나와서 삽질 아닌 삽질을 공유한다. 


딱 한가지만 알아두면 된다. cocos2d에서 RootViewController(UIViewController)는 CCDirector이다. 


- (void)showGameOver {

  self.gameOverPanel.visible = YES;

  self.myscene.userInteractionEnabled = NO;

  

  self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideGameOver)];

  

  UIViewController *viewController = (UIViewController *)[CCDirector sharedDirector];

  [viewController.view addGestureRecognizer:self.tapGestureRecognizer];

}


- (void)hideGameOver {

  UIViewController *viewController = (UIViewController *)[CCDirector sharedDirector];


  [viewController.view removeGestureRecognizer:self.tapGestureRecognizer];

  self.tapGestureRecognizer = nil;

  

  self.gameOverPanel.visible = NO;

  self.myscene.userInteractionEnabled = YES;

  

  [self beginGame];

}


Posted by KraZYeom

댓글을 달아 주세요

2012년 6월 8일 cocos2d에서 implicit declaration of ‘glColor4ub’ is invalid in c99 해결방법 글로 블로깅을 한적이 있다. 저 때는 v1->v2로 변경을 하는 과정에서 생긴 이슈 였는데, v2->v3로 갈려니 또 비슷한 에러가 발생한다. 


Implicit declaration of function 'ccDrawColor4B' is invalid in C99 에러가 뜬다.


간단하게 CCDrawingPrimitives.h 헤더파일만 임포트 하면 해결된다. 삽질 30분 해결 완료. 


#import "CCDrawingPrimitives.h"


- (void) draw{

    glLineWidth(maxSize.height);

    ccDrawColor4B(255, 255, 255, 255);

    ccDrawLine(ccp(0, 0), ccp(1, 0));

    ccDrawLine(ccp(maxSize.width / 2 - 1, 0), ccp(maxSize.width / 2, 0 ));

    ccDrawLine(ccp(maxSize.width - 1, 0), ccp(maxSize.width, 0 ));

    

    CGFloat width = currentValue;

    glLineWidth(maxSize.height);

    ccDrawColor4B(0, 0, 255, 255);

    if (currentValue < 0)

        ccDrawLine(ccp(maxSize.width / 2 - 1, 0), ccp(width + maxSize.width / 2, 0));

    else

        ccDrawLine(ccp(maxSize.width / 2, 0), ccp(width + maxSize.width / 2, 0));

  

}



Posted by KraZYeom
TAG cocos2d

댓글을 달아 주세요

이것 저것 삽질 하면서 알아낸 AdMob, Google Play Game Service, Leader Board, Flurry, Backbutton 구현 방법을 하나씩 연재 해볼까 합니다. $1000/년 할 때는 생각도 못 했는데, 어제 $99/월 로 바뀌어서 한 달 결제 하고 이것 저것 삽질을 해봤습니다. 


도움이 되시면 나중에 밥 한끼, 게임이 대박 나면 맛난거 사주세요. :-) 


긴급하게 정보를 얻고 싶으면 더 맛난 것으로... 


사실 어려운것은 하나도 없는데 구글링해도 잘 안나오는 정보라서 몇 시간씩 삽질을 해서 알아냈습니다. 

Posted by KraZYeom

댓글을 달아 주세요

  1. 천민개발자 2014.09.16 17:21  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 apportable을 이번에 한번 사용해보려고 하는 흔한 천민 개발자입니다 ㅠ

    일단 apportable 로 포팅은 (뭐 별건 없지만...) 했는데 google play로 인앱 관련으로 하려고 하니 딱 막혔네요 ;;

    홈페이지에 docs 부분을 보니 indie sdk로 해야한다해서 저도 99$ 결제를 하고 상태도 indie 로 바뀐것 같은데 여기서 어떻게 해야할지를 모르겠네요 ;;

    도움 좀 받으면 해서 이렇게 글 남깁니다 ...