앞서서 1번이라고 인덱스를 써놔서 최소 하나는 더 써놔야겠네요... 회사에서 빌드 서포트 땜시 밤새느라 하염없이 자리에 앉아있으려니 특이한 포스팅을 계속 하고 있네요...
(아... 집에 가서 맥스 연습해야 하는데... 낼 하는 스켈폼 스터디도 가야하고... 웬지 이번 주말도 집에서 암것도 못하고 졸도해 있을 것 같은 예감이... ㅠㅠ)


감속 / 가속운동이라면 단어가 어려울까요? 속도가 점점 줄어들면서 목표위치에 다가가는... 점점 느려지며 도착하는 애니메이션 말입니다... 더 쉬운 설명은 못 하겠습니다...ㅡ.,ㅡa


운동이라고 했으니 웬지, 물리라고 해야할 것 같기도 하지만...


지금이야 웬만한 코드상의 애니메이션은 각종 트윈 라이브러리로 처리합니다만(http://hosted.zeh.com.br/tweener/docs/en-us/misc/transitions.html 요런 애니메이션들이 가능하죠), 트윈라이브러리들이 돌기 전인 as2 초창기 시절에는 각 운동에 따른(애니메이션 속도의 변화에 따른) 수식이 돌아다녔습니다...


아마도 가장 많이 돌아다니며 유행했던 코드가 감속운동일 것인데... 바로 이런 코드죠

mc.x = (tx - mc.x) * 0.1


자 수식을 잘 들여다보죠

(tx(목표 위치) - x(현재 위치)) * 0.1

목표위치에서 현재위치를 빼면 바로 이동할 거리가 나옵니다.
하지만 거리라는 개념에서는 음수가 없다는걸 고려한다면 정확히는 뺀값의 절대값이 이동할 거리입니다.

그럼에도 그냥 쓰는 것은 그 음수와 양수의 차이로서 방향을 나타내기 때문입니다.
(춘천에서 + 1만km면 부산이고... - 1만km 이면 서울이란 얘기죠...)

다음과 같이 거리가 10개의 칸(한칸당 1000km 씩)으로  있다고 치죠.

춘천  |  |  |  |  |  |  |  |  |  부산 


그 10 에 0.1 을 곱하는 겁니다. 그러면 다음과 같이 한칸 이동하겠죠...

춘천■|  |  |  |  |  |  |  |  |  부산 
 
 한시간에 1000km를 이동했습니다. 그럼 한시간 뒤에는 또 1000 km를 가느냐...하면 아닙니다.

남은 칸이 9개 뿐이니 거기에 0.1 을 곱하면 900m 를 가는겁니다.

이전 시간에 비해서 이동한 거리가 줄었습니다... 즉 속도가 줄은 것이죠.

결국 다음과 같은 코드가 감속운동의 대표적인 수식이 되는 셈입니다
mc.x = (tx - mc.x) * 0.1 


자 그러면 가속 운동을 봅시다...

가속운동이 되려면 처음엔 빨랐다가 느려져야하겠죠?

처음에 빠르다는 이야기는 거리가 멀면 속도가 느리고, 가까우면 속도가 빠르다는 이야기일 겁니다...

속도가 거리에 반비례 한다는 뜻입니다.

목표점이 tx이고 현재의 위치가 x일 때,

속도 = 1 / (tx - x)

가 나온단 이야기 이죠... 이 속도대로 움직이면 됩니다.



이보다 더 쉽게 설명할 수가 있나요??? ㅡㅡ+


흠... 또 자주 나오는 산수가 머가 있을라나...

 
Posted by 미나토
: