svn 에서 취급 안하는 확장자
*.a
*.so
*.pyc
*.o
*.DS_Store
*.pyo

1. 준비 단계

비주얼 스튜디오 2012버전 설치

2. JDK 설치


2. cocos2d-x v3.4 설치

링크


D:\cocos2d 폴더에 압축 해제

D:\cocos2d\build\cocos2d-win32.vc2012.sln 실행 시키면 테스트 프로젝트를 빌드 해 볼 수 있다.



3. python 설치

링크


cocos.py new dual -p com.obs.project -l cpp -d d:\cocos2d\project


해당 폴더를 열어보면 새로운 프로젝트가 생성되어 있다.

열어서 빌드하면~ 다음과 같은 화면이 나온다. 빌드 할 때 "2. cocos2d-x v3.4 설치" 2번 째 스샷 참고



4. 안드로이드 NDK 설치

링크


















// 원에 십자를 그었을때 ╁ 두꺼운 선이 각도 0도이고 시계방향으로 1도, 2도... 한바퀴 돌아 두꺼운 선까지 360도이다.

// 각도 = 기준 점, 확인 할 점

float GetDirectionAngle( CCPoint _ptStandard, CCPoint _ptTarget )

{

_ptTarget.x -= _ptStandard.x;

_ptTarget.y -= _ptStandard.y;


return atan2(_ptTarget.x, _ptTarget.y) * 57.3f + 180;

}


// 점안인지 아닌지 = 기준 점, 확인할 점, 원크기

float IsInCircle( CCPoint _ptStandard, CCPoint _ptTarget, float _fCircleSize )

{

// (기준x - 현재x)^2 + (기준y - 현재y)^2 = 반지름^2

// 반지름을 제곱한거보다 작으면 원안에 점이 있는 거임


// static 변수를 사용해서, 계산을 줄일 수 있는 여지가 있음!


float a = (_ptTarget.x - _ptStandard.x) * (_ptTarget.x - _ptStandard.x) + (_ptTarget.y - _ptStandard.y) * (_ptTarget.y - _ptStandard.y);

float b = _fCircleSize * _fCircleSize;


if( a < b )

{

return true;

}


return false;

}


캐릭터 이동을 담당하는 스케쥴러 호출을 1/60초로 호출 하도록하고,
스케쥴러 안에서 x픽셀 움직이는데 걸리는 시간을 1/60초로 설정하고,

x값을 적절히 수정하여 캐릭터 속도를 만들어 낸다.

예로 1로 넣으면 1픽셀 이동하는데 1/60초가 걸리는 것이며,
x에 2를 넣으면 2픽셀 이동하는데 1/60초가 걸리는 것이다.

소수점도 사용가능하다. 예를 들어 2.6, 5.5 등등
 
cocos2d-x 자식 노드 순차로 순회하기

CCArray *pChildren = this->getChildren();

if (pChildren && pChildren->count() > 0)
{
CCObject* pObject = NULL;
int nCnt = 0;
CCARRAY_FOREACH(pChildren, pObject)
{
UILobbyUserHouse* pChild = (UILobbyUserHouse*) pObject;
pChild->setPosition( ccp(nCnt* 100, nCnt*100) );
nCnt++;
}
}
하나의 맵에는 하나의 plist 하나의 png만 사용가능하다.

파일명에서 타입 1, 2, 3 등 계속 순서대로 파일을 만든다.

Tiled_Animation_Type_0.plist
Tiled_Animation_Type_0.png


 기본적인 정보는 MapInfo.xlsx 파일에 들어있고
게임에 사용 될때는  MapInfo.xml 파일을 사용한다.
엑셀에서 저장할 때 xml로 저장하도록 한다.

애니메이션이 사용될 맵번호 map_0.tmx
타일 타입은 위에서 봤던 Tiled_Animation_Type_0.plist 파일명의 제일 끝에 숫자를 의미한다.
애니메이션번호는 그림파일 리소스가 0_0.png, 0_1.png, 0_2.png 와 같이 저장되는데,
뒤에숫자는 애니메이션 되는 거고 앞에숫자가 바로 애니메이션 번호를 의미한다.
앞에숫자는 숫자에 제한이 없고 뒤에 숫자는 최대 100까지 사용가능하다. 즉 100장까지 스프라이트가 사용가능하다.

 
맵번호 타일타입 애니메이션 번호 위치정보_X 위치정보_Y
mapno anitiletype anino x y
0 0 0 1 1
0 0 1 2 2


애니메이션 타일의 레이어 위치는 기존 타일의 위치는 전체 64개의 계층 타일에서 y 좌표를 보고 자동으로 할당되도록 되어 있다.

 

CCSpriteBatchNode는 영역을 지정해서 따로 따로 스프라이트를 만들 수 있다.

예제소스>
CCSpriteBatchNode* s = CCSpriteBatchNode::batchNodeWithFile("Tiled_Animation.png");
CCSprite* mySprite = CCSprite::spriteWithBatchNode(s, CCRectMake(0,0,64,32));
s->addChild(mySprite);
addChild(s);



1. 타일 파일명 의미


타일 애니메이션 인덱스_동작타입에 사용될 스프라이트들.png
ex>0_0.png



맵툴 사용 규약

툴은  www.mapeditor.org 에서 다운 받으면 된다.


1. 하나의 레이어에 하나의 타일셋만 사용가능하다.
2. 지형에서 레어어를 생성할 때 다음과 같이 생성해야 한다.
 


왜냐하면 타일의 층 하나하나가 개별로 분리되어 있어야 캐릭터 레이어를 조절해서 오브젝트에 가려지거나 오브젝트 앞에 렌더가 될 수 있기 때문이다.

맵툴에서 이동이 가능한지 불가능한지 값을 입력해야하는데, 이동가능 하든 불가능하든 전체다 타일의 속성을 설정해줘야한다.

 



1. 캐릭터 파일명 의미

캐릭터 애니메이션 인덱스_애니메이션 동작 타입_동작 타입에 사용될 스프라이트들.png
ex1> 000_000_000.png

파일명은 무조건 숫자 하나당 3글자로 해야 한다.

ex2> 1_1_1.png (x)

ex3> 001_001_001.png (o)



캐릭터 애니메이션 인덱스:
게임안에서 각각 캐릭터를 식별할 유니크 값으로 사용된다.

애니메이션 동작 타입:
000 = 위쪽을 보고 가만히 숨쉬기 
001 = 아래쪽  보고 가만히 숨쉬기  
002 = 왼쪽  보고 가만히 숨쉬기  
003 = 오른쪽  보고 가만히 숨쉬기

004 = 위 이동

005 = 아래 이동

006 = 왼쪽 이동

007 = 오른쪽 이동

008 = 위 공격

009 = 아래 공격

010 = 왼쪽 공격

011 = 오른쪽 공격

012 = 위 피격

013 = 아래 피격

014 = 왼쪽 피격

015 = 오른쪽 피격


향후 캐릭터가 웃는다던지 놀란다던지 애니메이션 동작이 늘어날 때 그 애니메이션 동작에 식별할 값으로 사용 된다.
ex> 016 = 캐릭터 웃기
       017 = 캐릭터 울기 
 

동작 타입에 사용될 스프라이트들:
동작 타입에 따른 플레이 해야 될 스프라이트의 모아놓은 것이다. 최대 100개까지 사용 가능하다.
(000_000_000 ~ 000_000_100 까지 사용 가능)

ex>


동작타입이 중복 될 수는 없음..
예를 들어 왼쪽으로 걸으면서 웃는건 안됨...
왼쪽으로 걸으면서 웃을려면 걸으면서 웃는 스프라이트를 만들어서 동작타입에 추가해야 함...




2. 게임에 사용될 데이터로 가공
 

http://zwoptexapp.com/ 
사이트에서 플레쉬 버전으로 들어가서 파일들을 작업하면 된다.
그럼 아웃풋으로 coordinates.plist, coordinates.png 파일을 뽑을 수 있는데 이것으로 게임에 사용된다.


애니메이션 속도는 1프레임당 0.2.초를 사용한다.

애니메이션 속도를 지정할 수 있도록 향후 계획중이다.

현재는 1동작에 대한 애니메이션을 처음부터 끝까지 도는데 1초가 걸린다.

프레임이 만약 2개라면 0.5초에 한번씩 2개의 스프라이트를 뿌리고

프레임이 만약 4개라면 0.25초에 한번씩 4개의 스프라이트를 뿌린다.!




+ Recent posts