2016년 11월 6일 일요일

[GMS] use tweenGMS

TweenGMS에 대해 소개합니다.
어떤 동작을 할 수 있는지 아래 링크를 확인하면 됩니다.
http://8bitwarrior.com/tools/TweenGMS/Demo/
demo를 봐도 정확하게 뭐하는건지 이해하기 힘듭니다. tween 동작을 이해하려면 기본적으로 GMS의 동작을 이해해야 합니다. 즉 간단하게 이동을 구현한다고 했을때 속도와 방향을 설정하면 간단하게 됩니다. 하지만 그러한 경우 말고는 x,y좌표를 직접 step이벤트에 조작해줘야 합니다. 시작지점과 목적지점 그리고 얼마만큼의 시간이 필요한지등의 정보를 입력해주면 이러한 작업을 자동으로 해줍니다.

현재 무료로 배포되고 있으며 사용하기 위해서는 Extension을 이용해서 사용합니다.
일단 구매를 해야합니다.

이후 사용하고자하는 project에 import해야합니다.

GMS에서 extension을 사용하는 방법

Extensions에서 오른쪽 버튼을 누른뒤 Import extension from library를 선택합니다.


계정이 필요하면 계정을 넣어주고요 그러면 구매했던 목록이 뜹니다.
그리고 Add to Project를 선택해주면 됩니다.


그기로 Import All 선택하면 됩니다.

설치하고 나서 아래 폴더에 가면 html 파일이 있는데 사용방법이 나와있습니다.
extensions\TweenGMS\Assets\datafiles\TweenGMS
Starter_Guide.html
Script_Reference.html
하지만 해당 내용으로 정확히 뭐가 뭔지 알기 힘듭니다.

데모 프로젝트 받기

데모 소스를 받아서 분석하면 좀 더 이해하기가 쉽습니다.

Simple Tweens

TweenSimple* 로 시작하는 단순한 tween입니다.
예제에서 simple move로 만들어 두었습니다. 마우스 클릭을 하면 랜덤하게 이동하게 됩니다.
object 내에 버튼을 누르면 아래와 같은 코드를 넣었습니다. random 하게 특정 위치로 이동하게 됩니다.

tween = TweenSimpleMove(x, y, random(room_width), random(room_height), 30, EaseInOutQuad);

이때 EaseInOutQuad 알고리즘을 나타냅니다. http://easings.net/ 여기를 참고하시기 바랍니다.

Property Setters

Simple을 제외하고는 나머지는 property를 세팅해야합니다. 이말의 의미는 실제 tween이 대상이 되는 x,y이면 move가 되는것입니다. 그래서 x인경우 x__ 이런식으로 표현합니다.

Creating and Playing Tweens

미리 tween 데이터를 만들어 두고(create) 필요할때 tween을 반복해서 실행하는 방법입니다.
내부적으로 두가지 방법이 있습니다.
Create
// Create undefined tween
tween_undef = TweenCreate(id);

// Create defined tween
tween_def = TweenCreate(id, x__, EaseInQuad, TWEEN_MODE_LOOP, true, 0.0, 1.0, x, mouse_x);

Play
// Play undefined tween
TweenPlay(tween_undef, x__, EaseInElastic, TWEEN_MODE_REPEAT, true, 0.0, 1.0, x, mouse_x)

// Play defined tween
TweenPlay(tween_def);

Fire Tweens

마지막으로 Fire Tweens가 있습니다. 이것은 앞에서 create, play를 각각 호출하는것을 한번에 처리하는 tween입니다.
아래 예제는 5초 동안 tween이 일어나게 됩니다.
// Fire tween with a 5 second delay
tween = TweenFire(id, x__, EaseInCubic, 0, true, 5.0, 1.0, x, mouse_x);

그리고 공통적으로 종료해줄때는 stop을 호출해 줍니다.
// Stop tween – will be immediately destroyed and removed from system
TweenStop(tween);


댓글 없음:

댓글 쓰기