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

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

애니메이션이 실행 도중 바로 변경을 하면 에러가 난다. 기존에 액션(애니메이션)을 멈추고 다른 애니메이션을 실행(run)한다. 


  [_pig stopAllActions];

  [_pig runAction:runAnimation];


저작자 표시 비영리
신고
Posted by KraZYeom

cocos2d에서 iOS, Mac 으로 Antialis를 끄고 Apportable에서 안드로이드용으로 빌드를 하면 크래쉬 된다. 안드로이드에는 설정을 끄도록 하자. 이것 때문에 한 3시간 잡아 먹은듯. 


#ifdef ANDROID

#else

  [sprite.texture setAntialiased:NO];

#endif


저작자 표시 비영리
신고
Posted by KraZYeom