자작 게임도 잘 부탁드려요~

adsense



[cocos2d-x / 플래피위치] 스프라이트, 스프라이트프레임, 스프라이트프레임 캐시






스프라이트와 스프라이트 프레임 (Sprite vs(?) SpriteFrame)

스프라이트는 이미지를 화면에 표시하기 위한 노드이고
스프라이트 프레임은 메모리에 자리하는 이미지입니다.

스프라이트를 파일로 생성하는 것과 프레임으로 생성하는 것의 차이는
Sprite::create - 파일을->텍스처(이미지)로 등록하여->이 텍스처로 스프라이트 노드를  생성
Sprite::createWithFrame - 메모리에 등록된 스프라이트 프레임으로 스프라이트 노드를 생성
단, 메모리에 스프라이트 프레임이 등록되어있지 않으면 파일을->텍스처(이미지)로 등록하여->스프라이트 프레임으로 사용

메모리상의 프레임에 억세스하기 위해 이름을 붙여 관리하는 것이
스프라이트 프레임 캐시입니다.

텍스처 아틀라스기 때문에 일부를 Rectangle로 쪼개서 다루는 것도 가능하며
쪼갠 상태를 캐시에 등록해서 쓸 수도 있습니다.


이번에 마녀 캐릭터의 애니메이션은 위 한 장의 이미지를 쪼개서 WITCH0, WITCH1이라는 이름으로 프레임 캐시에 등록해
이것으로 애니메이션을 생성해서 사용합니다. (4장 중 앞의 두 장만 사용)

여기서는 수동으로 쪼개서 썼지만, 
plist를 사용해서 자동으로 다량의 프레임 캐시를 등록할 수도 있습니다.(Texture Packer등의 툴 사용)

하기에 따라서는 json 같은 걸 만들어 수동으로 파싱하는 것도 물론 가능.


복수의 액션을 병행해서 실행하기

영상에서 설명되지 않았지만 한 가지 짚고 넘어갈게  있는데,
하나의 노드에 대해 복수의 트윈(=액션)을 동시에 실행하려면,
영상에서는 MoveBy와 Animate의 두 가지 runAction을 복수로 실행하고 있습니다.

원래는 Spawn이라는, 복수의 트윈을 실행하기 위한 트윈이 존재합니다.
runAction을 여러번 줄 것인지, Spawn을 쓸 것인지 좋은 것으로 쓰면 되지만
써 보면 알 수 있는게, Spawn을 쓰는게 의외로 코딩하기 불편하고 가독성도 나빠집니다.

특히 Sequence를 써서 긴 액션을 나열하게 되면 불편함이 도드라집니다.
개인차일지도 모르겠지만 저는 비추천.




덧글

댓글 입력 영역


Books

Geek라이프

기초부터 시작하는 모형 전자공작
박성윤 저

사이토 나오키의 일러스트 첨삭 레슨 Before & After
사이토 나오키 저/박수현 역

MSX&재믹스 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

핵심강좌! Cocos2d-x
이재환 저
예스24 | 애드온2
일본서적 전문사이트 NEPIC