2015년 10월 30일 금요일

corona sdk 에서 level director 이용 Animation 하기


Level Director가 생각보다 document가 상세하지 않습니다.
그래서 궁금한점들을 하나씩 시도하면서 문서를 만들어 보도록 하겠습니다.




애니메이션

애니메이션을 하기 위해서는 이미지를 그리거나 구해야 합니다. 일반적으로 연속된 애니메니션을 사용합니다. 여기에서는 제작사에서 제공되는 샘플에 있는 이미지를 이용하도록 하겠습니다.
설치하면 AssetTest 라는 폴더가 있는데 그곳안에 들어있는 이미지 입니다.
bird.png, dog_brown.png

일단 작업 폴더를 만들고 LD_TestAnimation 그 아래 images 폴더를 만들고 이미지를 복사해 둡니다.
lib 폴더도 LD_TestAnimation 아래에 복사합니다. (이곳에는 라이브러리 파일들이 있습니다)
상위에 config.lua 복사하고 main.lua는 나중에 만들도록 합니다.

정리하자면
LD_TestAnimation\images
LD_TestAnimation\lib
LD_TestAnimation\config.lua
LD_TestAnimation\main.lua (빈파일 만듭니다.)




이걸 툴에 넣을때는 assets 윈도우 아래에 있는 작은 화살표 버튼을 이용합니다. TexturePacker 툴이 없기 때문에 Add Asset(s) from Image를 사용합니다. bird.png를 선택하면 popup창이 뜹니다.


bird.png에 들어있는 이미지의 가로 크기와 세로크기를 입력합니다. 즉 애니메이션이 되는 이미지의 크기가 모두 같아야 한다는 의미입니다.
bird.png의 경우 160*200 이미지 이며, 5*5 이므로 160/5=32 200/5=40 즉 32*40 크기가 됩니다. 입력하고 나면 아래와 같이 됩니다.



파일 저장은 LD_TestAnimation\LD_Test.ldf 로 상위에 저장합니다.

bird_png1 번을 선택하고 오른쪽 아래 Properties (Animations)선택합니다.

그러면 다음과 같은 창이 뜨는데 아래와 같이 새로운 애니메이션 시퀀스를 추가합니다.


아래와 같이 값을 조정해서 sequence를 만듭니다.
여기에서 사용하는 인자중에 FrameCount, StartFrame, Time 3개의 값이 가장 중요합니다.


하나는 1000초, 하나는 500초 이면서 framecount와 startframe이 다른 두개의 시퀀스를 만들었습니다.


assets에 있는 bird_png1을 canvas에 끌어다 놓으면 됩니다. 끌어다 놓고서 이름을 bird로 변경하도록 합니다.
그리고 오른쪽 위에 level 명을 변경합니다. level이름에 따라서 파일명이 만들어지게 됩니다.
level을 선택하고 프로퍼티 창의 Name을 변경하면 됩니다.
여기에서는 level01로 변경하겠습니다.

지금까지 한것을 Export 하도록 하겠습니다.
Tools > Options에서 투토리얼 가이드대로 되어있는지 확인합니다.
Option의 Export 항목인데 여기에 From Template 의 경로를 설치한 Level Director\Templete 경로를 맞추어 주면 됩니다.

참고 http://www.retrofitproductions.com/level-director/quick-start-guide/


이제 거의 다되었습니다.
quick guide에 보면 Tips에 아래 내용이 나옵니다.
LevelDirectorSettings =
{
    imagesSubFolder = "images",
    levelsSubFolder = "levels",
}
config.lua를 열어봅니다.

경로가 이번예제에서는 images폴더에 이미지를 넣었기 때문에 아래와 같이 맞추고 level서브폴더를 따로 설정을 안했기 때문에 삭제합니다.
아래와 같습니다.
application =
{
content =
{
fps = 60,
width = 320,
height = 480,
scale = "letterbox"
},

LevelDirectorSettings =
{
imagesSubFolder = "images",
}
}

main.lua의 코드는 아래 documentation에서 가져오면 됩니다.
http://www.retrofitproductions.com/level-director/level-director-documentation/
Export 부분을 보면 되는데 아래와 같이 하면 에러납니다.
physics = require ("physics")
physics.start()
local LD = require("lib.LD_LoaderG2") -- G2 is for Corona Graphic2.0, remove for Graphics1.0
local myLevel = {}
myLevel:loadLevel("Level01")  -- Level01 will be the name of your exported level file
=> 수정
physics = require ("physics")
physics.start()
local LD = require("lib.LD_LoaderG2") -- G2 is for Corona Graphic2.0, remove for Graphics1.0
local myLevel = {}
myLevel=LD:loadLevel("level01")  -- Level01 will be the name of your exported level file
위와같이 하면 이미지는 나오나 아무런 동작도 하지 않습니다.

아래와 같이 하면 새의 애니메이션을 볼 수 있습니다.

physics = require ("physics")
physics.start()
local LD = require("lib.LD_LoaderG2") -- G2 is for Corona Graphic2.0, remove for Graphics1.0
local myLevel = {}
myLevel=LD:loadLevel("level01")  -- Level01 will be the name of your exported level file

local bird = myLevel:getLayerObject("New Layer","bird").view
bird:setSequence("Sequence0")
bird:play()

Corona SDK 애니메이션 관련한 내용은 아래 링크를 참고 바랍니다.

제작사에서 공개하는 유투브 동영상도 있습니다.
https://www.youtube.com/watch?v=OobWSx-0vS8&feature=youtu.be


댓글 없음:

댓글 쓰기