2008.08.28 19:57
5번째 글입니다.

이제까지 포물선 운동을 구현해 보았습니다.

이제까진 수류탄이나 돌맹이를 던지는것을 구현했죠.

오늘은 '화살'을 구현해봅시다.


먼저 생각해봅시다.

화살이라...

수류탄은 그냥 포물선 공식을 써주고 각도는 맘대로하고 날아가면 되지만...

화살은.....포물선의 접선에 대해서 각도가 변해야하죠..

그럼 이걸 어떻게 표현해야할까요?

접선이라....접선 하시면 떠오르는거 없으세요? 바로 '미분' 이죠. 오늘은 '미분의 개념'을 이용해서 화살을 표현해볼껍니다.


미분이라....

미분은 잘게 잘라놓은것이죠.

그럼 플래시에선 어떻게 잘게 자를까요? (dx 를 뜻하는것이죠.)

바로 플래시의 시간의 단위인 '프레임'을 쓸겁니다.

프레임을 기본단위로 하여 기울기를 구해봅시다.

기울기라.. 기울기는 Δy/Δx 죠? (Δ는 델타)

가정을 한번 해봅니다. 화살이 1, 2 프레임 진행했다고 합시다.

지금 현재는 2 프레임이니 2프레임에서의 기울기를 표현해야죠.

그럼 1프레임에서의 x, y값을 알고 2프레임에서의 x, y 값을 알수 있으니 기울기를 구할수 있겠죠?

이걸 액션 스크립트로 나타내면 다음과 같습니다.

diffX = mc._x - beforeX;
diffY = mc._y - beforeY;
beforeX = mc._x;
beforeY = mc._y;

음미 해봅시다...음.......

현 재 프레임(1)에서 beforeX, Y 는 mc의 x, y 값을 저장해두고, 다음 프레임(2)에 가서 현재의 프레임(2) 에서의 mc의 x, y 값에서 저장한 값(beforeX, Y)을 빼주면 diif(델타)X, Y 가 나오게 되죠..

그런데 생각해보니, 저렇게 해서 구한 기울기 값은 탄제트 값이 나오게 됩니다. (탄젠트(tan) 다들 아시죠? 높이/밑변)

하지만 우리가 필요한건 육십분법의 각을 알야야합니다. (왜냐하면, 무비클립의 각도를 ._rotation으로 할것이니까요.)

그래서 탄젠트의 역함수, 아크 탄젠트2(atan2)를 씁니다.

mc._rotation = Math.atan2(diffY, diffX)*180/Math.PI;

라고 해주면 되겠습니다.

이해 가시나요? (아크 탄젠트는 탄젠트의 역함수라서 y, x 위치가 바뀐건가..;;)

'[+++ FLASH +++] > - - 물리' 카테고리의 다른 글

[ 01 ] 중력 & 반중력 ?  (0) 2009.06.11
[수정필요]포물선 운동_05  (1) 2008.08.28
[수정필요]포물선 운동_04  (0) 2008.08.28
포물선 운동_03  (0) 2008.08.28
Trackback 0 Comment 1
  1. 지나가는이 2009.12.25 16:43 신고 address edit & del reply

    유용한 강좌 잘 봤습니다~ 감사합니다~



티스토리 툴바