ページ 1 / 1
ジャンプの考え方1について
Posted: 2009年8月21日(金) 01:41
by math
ゲームプログラミングの館の27.ジャンプの考え方1のところで、理解できない事があったので説明お願いします。
y = sqrt ( 2.000 * g * y_max) * t - 0.500 * g * t * t;
上の式は理解できたのですが、この式に*448.000 / y_max をして、
y = (int) ((sqrt ( 2.000 * g * y_max) * t - 0.500 * g * t * t) * 448.000 / y_max);
にする意味がわかりません。
また、y_maxを2で定義している理由もわかりません。
y_maxは最高点ですので、縦480ピクセルからキャラ32ピクセルを引いた、448ではないんですか?
詳しい説明お願いします。
Re:ジャンプの考え方1について
Posted: 2009年8月21日(金) 04:58
by kazuoni
うーん・・・
確かに、変数のパラメータの意味が変わってきているような気がします。
y_maxが空気抵抗
448.000が到達点
みたいな挙動ですね。物理的意味は・・・ちょっと自分にはわかりません^^;
書いた本人ではないので。。
ウィンドウが第四象限であることを踏まえ、
第一象限のように直観的に扱うなら、
y_max 480
y = (int) (sqrt ( 2.000 * g * y_max) * t - 0.500 * g * t * t);
DrawGraph( x , 480-y , image[8] , TRUE );
でジャンプしているように見えます。(スタート地点から480)
重力加速度gをいじれば、ジャンプ時間も調節できます。
Re:ジャンプの考え方1について
Posted: 2009年8月21日(金) 09:08
by math
kazuoniさん回答ありがとうございます。
私も、
y_max 480
y = (int) (sqrt ( 2.000 * g * y_max) * t - 0.500 * g * t * t);
DrawGraph( x , 480-y , image[8] , TRUE );
を考えたのですが、そうするとジャンプする時間を調節するのに、
重力加速度を変えるしかないけれど、重力加速度は定数なので、
変えるのはどうなんだ?と思っています。
* 448.000 / y_max;をしてy_maxに「2」を定義していますが、
この意味が分かる方、詳しく説明お願いします。
Re:ジャンプの考え方1について
Posted: 2009年8月21日(金) 10:11
by toyo
y_max = 2.0の意味は
「2m上まで投げ上げた時の時間とともに変化するy」
で例としてあげてある2メートルのことだと思います
プログラム内での2メートルを画面の448ドットに対応させるため最後に 448.0 / y_max を乗じています
Re:ジャンプの考え方1について
Posted: 2009年8月21日(金) 10:24
by kazuoni
>重力加速度を変えるしかないけれど、重力加速度は定数なので、
>変えるのはどうなんだ?と思っています。
変えたら何かまずいのですか?
>toyoさん
納得できました(笑)
だからmを上げるとゆっくりな投射になってたんですね。
Re:ジャンプの考え方1について
Posted: 2009年8月21日(金) 13:04
by やそ
重力加速度は現実の世界では定数といっていいと思いますが、
こと、ゲームにおいては「それらしく見えればよい」のであり、
変えてもなんら問題ありません。
実際に描写した際の動きが気に入らなければ、自分のゲームのスタイルに合うように
いくらでも変更してよいと思いますよ。
>y_max = 2.0の意味は
2Mだからだよ。・・・とはすぐにわかったけど、
上手い説明が思いつかなかった。
toyoさんGJ!!
Re:ジャンプの考え方1について
Posted: 2009年8月21日(金) 13:44
by marh
toyoさん回答ありがとうございます。
大変分かりやすい説明で理解することができました。
やそさん回答ありがとうございます。
これからは定数だからとこだわらず、ゲームにあうように変更していきます。