레이블이 cocos2d인 게시물을 표시합니다. 모든 게시물 표시
레이블이 cocos2d인 게시물을 표시합니다. 모든 게시물 표시

2014년 7월 22일 화요일

cocos2d HD(retina) sprite sheet 적용하기

cocos2d 에서 기본적으로 이미지 리소스는 SD 로 적용 되는듯 하다.

아이폰 5 기준 해상도가 640x1136
기존에  레티나 아이폰이 아니던 시절 해상도는 320x480 이였다. 당시에 작성한 수도쿠9를 업그레이드 하는 과정에서 cocos2d를 적용하려고 하니 이런 저런 삽질에 연속이다.

일단 기존에 이미지 리소스를 두배 크기로 만들어야  HD(레티나) 용 리소스가 되는데
이게 cocos2d에서 레티나로 적용이 되지 않는다.

파일이름이 @2x 프리픽가 아니라 -hd 였다. 이것도 삽질 끝에 알아 냈다. 
나는 무슨 프로퍼티가 있는줄 알았다. ㅠ.ㅠ

CCSpriteFrame *image;
image = [CCSpriteFrame frameWithImageNamed:@"sblank-hd.png"];

이런식으로 코딩을 하니 hd 리소스가 적용된 스프라이트를 이용 할 수 있었다.

이미지 리소스가 많아지니 이걸 다루기가 어려워 알아 보니

sharedSSpriteFrameCache 메서드가 있고  프로퍼티 리스트 파일과 하나로 합쳐진
텍스쳐 이미지가 있으면 여러 스프라이트를 한번에 캐쉬에 불러 올 수 가 있다.

근데 이걸 수작업으로 하는 것이 아니라  이미지 툴이 있는데 그중에 Zwoptex 라는 앱이 있다.
이 앱을 이용하면 스프라이트 시트를 작성 할 수 있다.

이 앱의 사용 방법은 png 파일들을 모두 라이브러리에 넣고 publish setting에 plist 파일 명과 하나의 이미지로 저장될 texture이미지 파일명을 기술 해주고
Layout을 적당한 알고리즘으로 선택(작은 스프라이트 이미지 정렬)  한 후
Publish 버튼만 누르면 끝이다.


여기서 삽질이 시작되었다.

나는 이미 frameWithImageName:@ 를 이용해서 -hd.png 리소스 이름으로 HD이미지를 다루고 있었고 그 파일들을 라이브러리로 Zwoptex를 이용해서 만들었으니 당연히 HD로 처리 될 줄 알았는데...

결과 화면은 이미지가 두배 씩 뻥튀기 되면서 엉망이다.

결국 알고 보니 .plist 파일과 .plist파일에 정의된 하나의 texture png파일 이름도 -hd.plist , -hd.png가 되어야 하는 것이다. ㅠ.ㅠ

결국 삽질 끝에 알아 내서 수도쿠9 2.0에 스프라이트를 출력 할 수 있었다.

2014년 6월 30일 월요일

cocos2d 좌표계 변환

cocos2d  좌표계에 부적응 중이다.

이거 어떻게 프로그래밍 해야 하는지 ㅠ.ㅠ

0,0  ------------> width x+
|
|
|
|
height y+

이러한 죄표계에 익숙한 나로서는


1 y+
^
|
|
|
|
0,0---------------> 1 x+

위와 같은 수학 좌표계 같은 cocos2d 좌표계가 너무 어렵다.

일단 스프라이트에 anchor는 고려 하지 않고

기존 UIkit에 좌표를 주면 cocos2d  ccp()에 넣을수 있는 float을 리턴 하는 메서드를
작성 하였다.

이것으로  대충 적응 해야 겠다.

- (float) convertX:(int)x
{
    CGSize s = [[CCDirector sharedDirector] viewSize];
    return (x) * (1.0 / s.width);
}

- (float) convertY:(int)y
{
    CGSize s = [[CCDirector sharedDirector] viewSize];
    return (s.height -y) * (1.0 / s.height);

}

아래와 같이 이용하면 된다.
btn.position = ccp( [self convertX:160], [self convertY:284] );


2013년 9월 4일 수요일

cocos2d 기본 클래스들...

CCNode

iPhone SDK의 NSObject와 같이 cocos2d의 최상위 클래스
CCNode 클래스는 당양한 프로퍼티가 있다. 위치, 색상, 투명도, 크기, 회전, 가시성 여부, 카메라, 그리드 등 등이 있다.
이 객체는 자식 노드를 가질 수 있고 계층 구조로 만들수 있다.
계층구조로 만들면 부모 객체의 투명도 같은 속성이 바뀔때 자식 노드도 함께 손쉽게 변경이 가능하다.
스케줄러도 포함하고 있다.

CCDirector

싱글톤 클래스임, 어플리케이션에서 단 하나의 인스턴스만이 존재한다.
cocos2d는 게임의 화면을 장면 (Scene) 단위로 구성해서 처리한다.
CCDirector는 여러 장면들을 뒤로 가게 하거나 앞으로 가게 하는 등의 역할을 한다.

CCScene & CCLayer

UIKit의 UIView의 해당하는 클래스다. 
Sprite, Label, Menu등과 같은 클래스 객체들을 자식으로 가질 수 있다.
CCScen과 CCLayer의 차이점은 CCScen은 사용자의 터치 이벤트를 받아서 처리할 수 없고 Accelerometer 입력 또한 처리 할 수 없지만 CCLayer는 사용자의 터치 이벤트를 받아서 처리할 수 있다.

CCSprite

Sprite는 화면을 구성하는 정적인 이미지나 애니메이션이 되는 일련의 이미지를 가리키는 표현으로, 보통 게임에서 사용되는 이미지를 말하는데, 이러한 CCSprtie는 이미지 파일을 화면에 출력하는 역할을 하므로 이미지 파일의 로딩과 화면 출력과 관련한 다양한 메서드를 제공 한다.

Action

Sprite의 애니메이션 처리를 위해 Action 클래스를 제공한다.
[sonesprite runAction: [[CCMoveBy actionWithDuration:2 position: ccp(50,10)]];
2초동안 50픽셀 오른쪽으로 이동, 위쪽으로 10픽셀 이동

다양한 액션을 제공한다.
이동, 회전, 점프, 크기 변환 등의 기본 액션과 기본 액션을 결합하거나 반복하는 액션을 제공한다.
By , To 라는 두 가지 종류로 나뉘는데, By는 현재 값에서 지정한 값만큼 변하는 액션을 수행하고, To는 지정한 값으로 변하는 액션을 수행한다.


2013년 8월 15일 목요일

cocos2d 시작해봅시다!


cocos2d를 한번 해보자
몇달 전에 책을 훑어 보았다.
생활이 바빠서인지 맥미니를 켜본지도 한참 오래된거 같다.
실제로 코딩을 해보지 않으니까 다 잊어 버렸다.
다시 시작..!


http://www.cocos2d-iphone.org/download/

안정버젼을 다운로드 받는다
현재 시점 안정버젼은 2.1

다운로드 받은 파일에 압축을 풀고 적당한 위치로 저장 한다.

터미널에서 다음과 같이 수행하면 xcode 템플릿을 설치 할수 있다.

sparrow-mac-mini2:cocos2d-iphone sparrow$ ./install-templates.sh -f
cocos2d-iphone template installer



Installing cocos2d templates
----------------------------------------------------

...creating destination directory: /Users/sparrow/Library/Developer/Xcode/Templates/cocos2d v2.x/
...copying cocos2d files
...copying CocosDenshion files
...copying Kazmath files
...copying template files
done!



Installing Physics Engines templates
----------------------------------------------------

...copying Box2d files
...copying Chipmunk files
done!



Installing JS Bindings templates
----------------------------------------------------

...copying JSBindings files
...copying JSBindigns Support files
...copying SpiderMonkey files
...copying JR Swizzle files
...copying CocosBuilderReader files
done!



Installing CCNode file templates...
----------------------------------------------------

...creating destination directory: /Users/sparrow/Library/Developer/Xcode/Templates/File Templates/cocos2d v2.x/
done!

설치된 템플릿은 다음과 같이 Xcode에서 보인다.



이제 모든 기본 프로그램 hello world를 작성해봅시다.!

이런 아무것도 작성하지 않고 템플릿으로 만들어진 코드가 hello World 다!


이미 책도 오래 되었고 
소개된 버젼도 1.0.1

버젼도 2.0

많이 바뀐듯 하지만

실제로 코딩을 하면서 틈틈이 블로그에 글을써서 익혀야 겠다.



2011년 10월 18일 화요일

cocos2d 시작. (설치)

cocos2d를 시작한다.

먼저 standard 컴퍼넌트 만으로 게임을 만드는건 무리 같다.
sudok9 은 standard 컴퍼넌트로만 구성된 게임으로
간단한 에니메이션만 구성되어 있다.

이제 cocos2d를 시작해서 좀더 게임다운 게임을 위한 한발작...

자 cocos2d설치...


http://www.cocos2d-iphone.org/download

템플릿 설치
http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:lesson_1._install_test

현재 2011년 10월 18일

1.0.1 안정 버젼을 내려 받았다.
파인더에서 클릭으로 압축이 풀리면
cocos2d-iphone-1.0.1 디렉토리
여기서

sudo ./install-templates.sh -U
를 입력하면 알아서 템플릿을 설치 한다.

xcode 현재 2011년 10월 18일
4.2 build 4D199 iOS5 sdk
기본 템플릿을 하나 열어서 실행하면 2개의 워닝이 있지만 iOS5 시뮬레이터에서
hello World를 만나 볼수 있다.