svn 에서 취급 안하는 확장자
*.a
*.so
*.pyc
*.o
*.DS_Store
*.pyo
코코스2D-X
- svn에서 관리 안 하는 확장자지만 커밋이 필요한 파일들 2015.03.16
- cocos2d-x v3.4 개발 환경 구축하기 (for windows) #1 2015.03.05
- cocos2d에서 조이패드,조이스틱 만들기 2012.03.27 1
- 캐릭터 이동속도 2012.03.26
- cocos2d-x 자식 노드 순차로 순회하기 2012.03.19
- 애니메이션 타일 파일 정책 2012.03.14
- CCSpriteBatchNode 2012.03.06 1
- 타일 애니메이션에 사용될 스프라이트 파일명 정책 2012.03.02
- 맵툴 사용 규약 2012.02.29
- 캐릭터 애니메이션에 사용될 스프라이트 파일명 정책 2012.02.29 1
svn에서 관리 안 하는 확장자지만 커밋이 필요한 파일들
cocos2d-x v3.4 개발 환경 구축하기 (for windows) #1
1. 준비 단계
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 설치
cocos2d에서 조이패드,조이스틱 만들기
// 원에 십자를 그었을때 ╁ 두꺼운 선이 각도 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;
}
캐릭터 이동속도
스케쥴러 안에서 x픽셀 움직이는데 걸리는 시간을 1/60초로 설정하고,
x값을 적절히 수정하여 캐릭터 속도를 만들어 낸다.
예로 1로 넣으면 1픽셀 이동하는데 1/60초가 걸리는 것이며,
x에 2를 넣으면 2픽셀 이동하는데 1/60초가 걸리는 것이다.
소수점도 사용가능하다. 예를 들어 2.6, 5.5 등등
cocos2d-x 자식 노드 순차로 순회하기
애니메이션 타일 파일 정책
파일명에서 타입 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는 영역을 지정해서 따로 따로 스프라이트를 만들 수 있다.
예제소스>
CCSpriteBatchNode* s = CCSpriteBatchNode::batchNodeWithFile("Tiled_Animation.png");
타일 애니메이션에 사용될 스프라이트 파일명 정책
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개의 스프라이트를 뿌린다.!