
스프라이트와 스프라이트 프레임 (Sprite vs(?) SpriteFrame)
스프라이트는 이미지를 화면에 표시하기 위한 노드이고
스프라이트 프레임은 메모리에 자리하는 이미지입니다.
스프라이트를 파일로 생성하는 것과 프레임으로 생성하는 것의 차이는
Sprite::create - 파일을->텍스처(이미지)로 등록하여->이 텍스처로 스프라이트 노드를 생성
Sprite::createWithFrame - 메모리에 등록된 스프라이트 프레임으로 스프라이트 노드를 생성
단, 메모리에 스프라이트 프레임이 등록되어있지 않으면 파일을->텍스처(이미지)로 등록하여->스프라이트 프레임으로 사용
메모리상의 프레임에 억세스하기 위해 이름을 붙여 관리하는 것이
스프라이트 프레임 캐시입니다.
텍스처 아틀라스기 때문에 일부를 Rectangle로 쪼개서 다루는 것도 가능하며
쪼갠 상태를 캐시에 등록해서 쓸 수도 있습니다.

이번에 마녀 캐릭터의 애니메이션은 위 한 장의 이미지를 쪼개서 WITCH0, WITCH1이라는 이름으로 프레임 캐시에 등록해
이것으로 애니메이션을 생성해서 사용합니다. (4장 중 앞의 두 장만 사용)
여기서는 수동으로 쪼개서 썼지만,
plist를 사용해서 자동으로 다량의 프레임 캐시를 등록할 수도 있습니다.(Texture Packer등의 툴 사용)
하기에 따라서는 json 같은 걸 만들어 수동으로 파싱하는 것도 물론 가능.
복수의 액션을 병행해서 실행하기
영상에서 설명되지 않았지만 한 가지 짚고 넘어갈게 있는데,
하나의 노드에 대해 복수의 트윈(=액션)을 동시에 실행하려면,
영상에서는 MoveBy와 Animate의 두 가지 runAction을 복수로 실행하고 있습니다.
원래는 Spawn이라는, 복수의 트윈을 실행하기 위한 트윈이 존재합니다.
runAction을 여러번 줄 것인지, Spawn을 쓸 것인지 좋은 것으로 쓰면 되지만
써 보면 알 수 있는게, Spawn을 쓰는게 의외로 코딩하기 불편하고 가독성도 나빠집니다.
특히 Sequence를 써서 긴 액션을 나열하게 되면 불편함이 도드라집니다.
개인차일지도 모르겠지만 저는 비추천.
at 2022/08/08 15:30
덧글