cocos2dx(12)
-
box2D 정리
#1. Box2D 관련 include include 단은 크게 손 댈게 없다. external\ external\box2D\include를 추가해 주고 (아마 external은 원래 있었지 싶은데) chipmunk관련 include가 눈에 띄면 없애 준다. (cocos2d 엔진의 기본 물리 엔진은 chipmunk이다) #2. define 정리 기본적으로 Chipmunk로 셋팅된 프로젝트를 Box2D로 변경해 주는 과정이 필요하다. 지금 프로젝트와 libcocos2d 프로젝트 모두의 Preprocessor Definition에서 CC_ENABLE_CHIPMUNK_INTEGRATION 를 0으로 바꿔주고 CC_ENABLE_BOX2D_INTEGRATION 를 1으로 바꿔줘야 한다. (아마 CC_ENABLE_C..
2023.03.14 -
action)callfuncN을 이용한 트릭
auto ac11 = CallFuncN::create([](Ref* pSnd) { auto sc = Director::getInstance()->getRunningScene(); ((Node*)pSnd)->removeFromParentAndCleanup(false); sc->addChild((Node*)pSnd, 100); }); man->runAction(ac11); >> Scene 아래에 붙은 여러 레이어 중 하나에 man이 붙은 상황. 위 ac11을 통해서 CallFuncN을 실행하는 객체(pSnd, 위 상황에서는 man)을 받아서 remove from parent 한 다음에 cleanup을 수행하지 않음-> 메모리에 남아있음 지금 실행중인 Scene으로 부모를 변경하고 가장 앞쪽으로 zorder ..
2023.03.14 -
cocos2d observer pattern : notification center
cocos2d Notification은 전체적으로 NotificationCenter singleton 에서 총괄함. cocos2d::NotificationCenter::getInstance() 을 먼저 받아온 다음에... 여기다가 addObserver를 붙여주고, postNotification으로 해당 observer를 호출. 붙였던 observer는 Ref 객체가 사라지는 타이밍에 removeObserver로 꼭 없애 줘야 함. ---------------------------------------------------------------------------------- #1. Notiinfo.h #ifndef __NOTIMESSAGE_H__ #define __NOTIMESSAGE_H__ #ifnd..
2023.03.14 -
ffmpeg && cocos2d 동영상 플레이어
소리 재생부분은 일단은 필요없어서 넣지 않았음. linker에 연결할 부분은 avcodec.lib avformat.lib avutil.lib swscale.lib ffmpeg 3.4.1 32bit shared library를 갖고 작업함. 여기 올리고 싶은데 압축파일이 커서... #include "cocos2d.h" extern "C" { #include "libavcodec/avcodec.h" #include "libavformat/avformat.h" #include "libswscale/swscale.h" #include "libavutil/avutil.h" #include "libavutil/imgutils.h" } class LayerMovie : public cocos2d::Layer { pu..
2023.03.14 -
좌우가 연속되는 배경 횡스크롤
#define LAYER_BG_WIDTH 4096 #define LAYER_BG_HEIGHT 1024 #define LAYER_BG_BACK_TIME 120.0f //BG 기준 time init() { //BG 영역 //BG repeat parameter Texture2D::TexParams params; params.minFilter = GL_NEAREST; params.magFilter = GL_NEAREST; params.wrapS = GL_REPEAT; params.wrapT = GL_REPEAT; //Rect영역은 texture의 좌상단부터 계산하는 점 유의 back = Sprite::create("bg/bg_base.png", Rect(0, 0, 768, LAYER_BG_HEIGHT)); ba..
2023.03.14 -
애니메이션 재생후 셀프삭제, using schedule, CardinalSpline
//애니메이션 재생후 셀프삭제, 다른 함수 사용 auto ani = Animate::create(iceBreakAni); auto acheck = CallFunc::create([]() {printf("animation break\n"); }); auto del = RemoveSelf::create(); auto ac = Sequence::create(ani, acheck, del, NULL); iAni->runAction(ac); //using schedule 1. schedule에 사용할 함수는 update함수와 같이 function(float deltaTime)형식으로. 2. schedule(schedule_selector(Game::func_ON)); 이 기본 형식. schedule_selecto..
2023.03.14