간단한 점프의 구현에 관한 답변.

프로그래밍/프로그래밍 메모장 2006/07/14 23:40

GPG의 질문이 올라왔길래 정말 오래전에 했던  포물선운동에 대해서
생각하고 구현햇던 것들을 간단히 정리해보았습니다.

(아마 16년전쯤 될것입니다. 몇년전이라는 것은 중요하지 않기 때문에..
젠장 상당히 오래됬군요;; ) 그당시  게임 만들어보자고 공부했던 시절에..
대포의 각하고 파워를 주면 어떻게 움직일것인가 .. 누구라도 처음 시작할때
한번쯤 고민했던 그런내용...이 갑자기 생각이나서 말입니다.)

질문의 내용은 이것입니다. 캐릭터의 점프구현은 어떻게...
http://www.gpgstudy.com/forum/viewtopic.php?topic=11538

구현의 디테일은 다음과 같은 방법입니다.

저의 핵심은 이겁니다. 휴리스틱..

움직임함수는 여러가지를 쓸수 있겠지만 점프라면  간단한 포물선또는
그런느낌만 주면 됩니다. 실제라기보단 실제처럼 보이는거를 추구하는것이다.

컴퓨터게임 그리고 PC그래픽의 발전은 실제와같은 것을 쓰는것보다는
항상 속도를 위해서 "실제처럼"보이는 것을 추구하면서 발전해왔습니다.
지금의 PC의 3D API도 레이트레이싱의 실제물리를 이용한것이 아닌
마치 그것처럼 보이는 형태로 발전되어 온것이기 때문입니다.

사실 디지탈이 엄밀하게 보면 샘플링이기 때문에 아날로그보다 부정확해야 되는데
실제로는 그런 느낌이 아닌것처럼 ... 물론 예민한 사람은 구분이 가능하기 때문에
아날로그를 더 좋아함니다만...

뭔가 정밀하게 하자면 중력가속도 /부력이나 마찰력 등등 이용한
물리법칙으로 구현하시면 되구요.


초간단이라면 이런식입니다.(일단 2차원만 고려했습니다. 3차원도 결국 평면의 방향만
결정되면 캐릭터가 진행할면만 고정되면 그대로 사용해도 상관없을 것 같습니다.)

일단 점프가 끝나는 시점은 땅에 닺는 시점입니다.  결국 시간단위가 되겠죠. 점프시작시점이
T0 라고 하면 점프끝나는 시점은 어딘가의 Tn 시점이 되겠습니다.

점프곡선을 가파르게할것인지 아니면 유연하게 할것인지는 가속도로 정합니다.  V
가속도는 당연이  T0와 Tn 단에서 가장 큽니다. 절벽으로 떨어지는 경우가 있기때문에
최대가속도도 정해놓으면 좋습니다. 최대가속도에 도달하면 더이상 속도는
증가하지 않는것이죠
가속도의 증분(dV) 에 의해서 최대높이가 결정됩니다. 만약 가속도가 10이고
증분치가 -1 이라면 최대높이는 T10 에서 이루어지며  10+9+8+7+....+1 이 되겠습니다.


높이와 가속도 구하는 알고리즘은 이렇게 되겠습니다.

1.  높이계산 Tn 시점의 높이 =  Tn-1 시점의 높이 +  가속도

2.  다음단계를 위한 가속도계산

                              가속도 = 가속도  - 일정치
                              if 가속도가 최대치를 넘는다면 최대가속도로 고정.

이것을 가지고 프레임단위로 적용하면 되겠습니다. 너무 빨리 내려온다고 싶으면
증분치를 작게설정하거나
높이가 낮다고 생각하면 최초가속도를 크게 하면 되겠습니다.

아니면 스케일링을 해도 됩니다.

높이 =  높이* 스케일.

위의 알고리즘은 굉장히 간단합니다만 상당히 정밀한 곡선을 가집니다. 왜냐면 미분의 원리를 이용한 방법이기 때문에 (이차방정식인 포물선을 미분하면 1차방정식이 되지요)

속도도 빠르면서 다른형태의 정밀한 방정식을 사용한 구현하고 별차이가 거의 없습니다. 
가속도하고 증분값만 잘 조정해주면 말입니다. 실제적으로 위의 알고리즘이 사실
T에관한 운동의공식이기 때문에;;;.

뭐든지 그림이 확실하죠.

위처럼 초기속도가 5이고  증분이 -1 이라면 T1에서는 5
T2에서는 5+ 4 , T3 에서는 5+4+3  이런씩으로 되겠습니다. 가속도가 점점 줄어들다가
0가  되고나면  높이값이 최대가 되고 그 다음은 방향이 반대가 되어서 내려오게되죠.

위의 그래프는 T에 관한 높이 그래프 이기때문에 x,y를 평면에 대한 고려는
다시 앞으로 가는 속도를 고려해서 계산하면 3D에서 적용할 수 있겠습니다.

앞으로 가는 속도가 없으면 제자리 뛰기가 될것이며 속도가 크면 완만한 포물선, 속도가
적으면 경사큰 포물선이 되겠습니다. 또는 속도가 변할수 있다면 보통의 게임은 점프하면
그 시점에서 계산된 속도로 되어서 변함이 없지만 이중점프를 해야된다거나 하는 경우에는
추가적인 속도변경을 해주시면 됩니다.

From Xevious7. http://www.xevious7.com

top

Trackback Address :: http://xevious7.com/trackback/102

  1. Tracked from 표 블로그 2006/07/14 17:25 DELETE

    Subject: 포물선 구현

    몇년에 예전에 포물선 구현할때 싸인 함수를 반만 잘라서 썼던 기억이 있는데 저런 방식으로 구현을 하면, 훨씬 부드럽고 무게감이 있게 구현 될 것 같다. 액션 게임을 거의 안만들어서 심각..
  1. 2006/07/14 16:46 MODIFY/DELETE REPLY

    관리자만 볼 수 있는 댓글입니다

  2. xevious7 2006/07/14 18:15 MODIFY/DELETE REPLY

    문서를 조금 수정했습니다. 제가 착각을 하고 10팩토리알이라고 했네요
    팩토리알은 곱인데 ^^; 여긴 합이니 전혀 상관이 없네요~

  3. kallru 2006/07/27 17:25 MODIFY/DELETE REPLY

    3디에 적용하려하는데 잘 안되네요 ㅠ_ㅠ

    • xevious7 2006/08/17 12:49 MODIFY/DELETE

      3D에서 구현하려면 스케일링 부분을 잘 해주셔야
      그럴싸한 점프가 될 것 같습니다.
      아무래도 정수로 떨어지기 때문에 실제변환뷰의
      자표스케일과 비슷하게 맞추는것이 관건입니다.

  4. wolfpi 2006/08/16 19:39 MODIFY/DELETE REPLY

    글 잘봤습니다. ^^
    점프 구현은 이게 제일 간단하겠네요.

  5. 듀듀 2006/10/27 09:28 MODIFY/DELETE REPLY

    감사합니다.....

  6. 임성훈 2012/03/07 14:33 MODIFY/DELETE REPLY

    Tn 이 시간단위를 예기하는 건가요?

    • xevious7 2012/03/08 23:12 MODIFY/DELETE

      네 개념적으로 시간단위를 의미합니다.

      (시간에 따라서 프레임이 표시되는 것이니
      일정 프레임단위로 생각해도 됩니다.)

  7. 무료야동 2017/05/16 18:52 MODIFY/DELETE REPLY

    무료야동보는곳

    [ http://ge.ygto.com ]최신야동 매일업로드

    한국야동 일본야동 미국야동 서양야동 유럽야동

    유출야동 연예인합성사진 많은곳

    즐기며 사는인생이 참된삶이다.

  8. 코코킹 2017/05/26 01:11 MODIFY/DELETE REPLY


    소라넷 밍키넷 코코킹 꿀밤 도신닷컴 무료동영상감상하기

    실♡♥제♡♥만♡♥남 ( 스. 와. 핑, 초 대 남, 조. 건. 만. 남. )을 공 / 짜로 할수 있는 곳!!!

    구글 검색창에서 "코코킹"을 검색하세요~!!


    코코킹 트위터 주소1: http://adf.ly/1TtJWD
    코코킹 트위터 주소2: http://adf.ly/1TtJWD

  9. 코코킹 2017/05/29 19:06 MODIFY/DELETE REPLY


    소라넷 밍키넷 코코킹 꿀밤 도신닷컴 무료동영상감상하기

    실♡♥제♡♥만♡♥남 ( 스. 와. 핑, 초 대 남, 조. 건. 만. 남. )을 공 / 짜로 할수 있는 곳!!!

    구글 검색창에서 "코코킹"을 검색하세요~!!


    코코킹 트위터 주소1: http://adf.ly/1TtJWD
    코코킹 트위터 주소2: http://adf.ly/1TtJWD

  10. wdfg 2017/06/05 07:57 MODIFY/DELETE REPLY

    마이클슐러 생물공정공학2판 솔루션 bioprocess engineering basic concepts 2nd ed Michael L. Shuler 저,투자공학 financial economics bodie merton cleeton 11 12 장 문제풀이 11장 1. Suppose you own a grove of orange trees. The harvest is still two months away but you are concerned about price risk. You...


    [교육공학의 개념] 교육공학의 정의와 특징, 효과, 교육공학에 대한 비판적 우려,최신디지털공학실험 10th 실험책 솔루션,교육공학 공통형 2017년-교육공학에 대한 교육공학자들의 정의를 참고하여 자기 자신 나름대로의 교육공학에 대한 정의를 내리고, 교육공학의 다섯 가지 주요 영역-교육공학3공통 과제물


    http://blog.naver.com/ch1215kr/221020887029

    http://zooma.co.kr/blog/?mb_id=a0708&id=156851

  11. 코코킹 2017/06/08 18:24 MODIFY/DELETE REPLY


    소라넷 밍키넷 코코킹 꿀밤 도신닷컴 무료동영상감상하기

    실♡♥제♡♥만♡♥남 ( 스. 와. 핑, 초 대 남, 조. 건. 만. 남. )을 공 / 짜로 할수 있는 곳!!!

    구글 검색창에서 "코코킹"을 검색하세요~!!


    코코킹 트위터 주소1: http://adf.ly/1TtJWD
    코코킹 트위터 주소2: http://adf.ly/1TtJWD

  12. 코코킹 2017/06/18 03:57 MODIFY/DELETE REPLY


    소라넷 밍키넷 코코킹 꿀밤 도신닷컴 무료동영상감상하기

    실♡♥제♡♥만♡♥남 ( 스. 와. 핑, 초 대 남, 조. 건. 만. 남. )을 공 / 짜로 할수 있는 곳!!!

    구글 검색창에서 "코코킹"을 검색하세요~!!


    코코킹 트위터 주소1: http://adf.ly/1TtJWD
    코코킹 트위터 주소2: http://adf.ly/1TtJWD

  13. 코코킹 2017/06/20 16:13 MODIFY/DELETE REPLY


    소라넷 밍키넷 코코킹 꿀밤 도신닷컴 무료동영상감상하기

    실♡♥제♡♥만♡♥남 ( 스. 와. 핑, 초 대 남, 조. 건. 만. 남. )을 공 / 짜로 할수 있는 곳!!!

    구글 검색창에서 "코코킹"을 검색하세요~!!


    코코킹 트위터 주소1: http://adf.ly/1TtJWD
    코코킹 트위터 주소2: http://adf.ly/1TtJWD

  14. 코코킹 2017/06/21 13:30 MODIFY/DELETE REPLY


    소라넷 밍키넷 코코킹 꿀밤 도신닷컴 무료동영상감상하기

    실♡♥제♡♥만♡♥남 ( 스. 와. 핑, 초 대 남, 조. 건. 만. 남. )을 공 / 짜로 할수 있는 곳!!!

    구글 검색창에서 "코코킹"을 검색하세요~!!


    코코킹 트위터 주소1: http://adf.ly/1TtJWD
    코코킹 트위터 주소2: http://adf.ly/1TtJWD

Write a comment