ジャンプの考え方1について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
math

ジャンプの考え方1について

#1

投稿記事 by math » 16年前

ゲームプログラミングの館の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ではないんですか?

詳しい説明お願いします。

kazuoni

Re:ジャンプの考え方1について

#2

投稿記事 by kazuoni » 16年前

うーん・・・
確かに、変数のパラメータの意味が変わってきているような気がします。
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をいじれば、ジャンプ時間も調節できます。

math

Re:ジャンプの考え方1について

#3

投稿記事 by math » 16年前

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」を定義していますが、
この意味が分かる方、詳しく説明お願いします。

toyo

Re:ジャンプの考え方1について

#4

投稿記事 by toyo » 16年前

y_max = 2.0の意味は
「2m上まで投げ上げた時の時間とともに変化するy」
で例としてあげてある2メートルのことだと思います

プログラム内での2メートルを画面の448ドットに対応させるため最後に 448.0 / y_max を乗じています

kazuoni

Re:ジャンプの考え方1について

#5

投稿記事 by kazuoni » 16年前

>重力加速度を変えるしかないけれど、重力加速度は定数なので、
>変えるのはどうなんだ?と思っています。

変えたら何かまずいのですか?

>toyoさん

納得できました(笑)
だからmを上げるとゆっくりな投射になってたんですね。

やそ

Re:ジャンプの考え方1について

#6

投稿記事 by やそ » 16年前

重力加速度は現実の世界では定数といっていいと思いますが、
こと、ゲームにおいては「それらしく見えればよい」のであり、
変えてもなんら問題ありません。
実際に描写した際の動きが気に入らなければ、自分のゲームのスタイルに合うように
いくらでも変更してよいと思いますよ。

>y_max = 2.0の意味は
2Mだからだよ。・・・とはすぐにわかったけど、
上手い説明が思いつかなかった。
toyoさんGJ!!

marh

Re:ジャンプの考え方1について

#7

投稿記事 by marh » 16年前

toyoさん回答ありがとうございます。
大変分かりやすい説明で理解することができました。

やそさん回答ありがとうございます。
これからは定数だからとこだわらず、ゲームにあうように変更していきます。

閉鎖

“C言語何でも質問掲示板” へ戻る