ページ 11

マリオのジャンプについて

Posted: 2011年3月01日(火) 00:04
by マシュマロ
はじめましてです。環境はウインドウズ7、VisualC++(DXライブラリ)
マリオのジャンプみたいに飛びたいんですが、コードで悩んでいます。
調べてみたところ
http://d.hatena.ne.jp/Gemma/20080517/1211010942
上記のサイトにコードが書いてありましたが、変数の意味が分かりません。
y_temp(一時保存場所)
Mario.y(キャラの高さ?画像表示の際のY座標?)
Mario.y_prev(前に進む距離?)
F(適当に値入れていいの?この値はどう変化させるの?)
これら4つの変数の意味や使い方などを教えてください。
お願いします

Re: マリオのジャンプについて

Posted: 2011年3月01日(火) 00:19
by bitter_fox
マシュマロ さんが書きました: これら4つの変数の意味や使い方などを教えてください。
y_tempはURL先の二行目でMario.yの値が変わってしまうのでMario.y_prevの為に変わる前の値を保存しています。
Mario.yは現在の位置です。
Mario.y_prevは一つ前の位置に当たります。
Fは加速度に当たります。

このコードでは現在の位置から一つ前の位置を引いたものにFを足したものを現在の位置に足しています。

コード:

y_temp = Mario.y;                          // Mario.yが次の代入で値が変わってしまうので保存しておく(つまり前回の値を保存)
Mario.y += (Mario.y - Mario.y_prev) + F;   // この入力でMario.yは変化(新しいマリオの位置)
Mario.y_prev = y_temp;                     // Mario.y_prevは一つ前なので一つ前に当たるy_tempを代入

Re: マリオのジャンプについて

Posted: 2011年3月01日(火) 00:31
by マシュマロ
bitter_foxさんお早い回答感謝です。
とても分かりやすい説明で分かりました。

Re: マリオのジャンプについて

Posted: 2011年3月01日(火) 00:39
by パコネコ
y_temp = Mario.y;
Mario.y += (Mario.y - Mario.y_prev) + F;
Mario.y_prev = y_temp;

まずジャンプしてない時を考えましょう、
マリオの存在している高さは0とします。
Fもおそらく0でしょう。

コード:

y_temp(0) = Mario.y(0);
Mario.y(0) += (Mario.y(0) - Mario.y_prev(0)) + F(0);
Mario.y_prev(0) = y_temp(0);
次のループ時も同じになりますよね。
では
ジャンプする瞬間を考えましょう。
ジャンプする瞬間はF=10としてあげます。

コード:

y_temp(0) = Mario.y(0);
Mario.y(0) += (Mario.y(0) - Mario.y_prev(0)) + F(10);
Mario.y_prev(0) = y_temp(0);
となります。
次に空中なのでF=-1とします。

コード:

y_temp(0) = Mario.y(10);
Mario.y(10) += (Mario.y(10) - Mario.y_prev(0)) + F(-1);
Mario.y_prev(0) = y_temp(10);
Fは空中にある限り-1なので次でも-1です。
現在のそれぞれの値は
y_temp=10;
Mario.y=10+9=19;
Mario.y_prev=10;
F=-1;
です。
次のときは
y_temp=19;
Mario.y=19+8=27;
Mario.y_prev=19;
F=-1;
このままマリオのy座標の式だけみてみましょう
Mario.y=0+10=10;
Mario.y=10+9=19;
Mario.y=19+8=27;
Mario.y=27+7=34;
Mario.y=34+6=40;
Mario.y=40+5=45;
Mario.y=45+4=49;
Mario.y=49+3=52;
Mario.y=52+2=54;
Mario.y=54+1=55;
Mario.y=55+0=55;
Mario.y=55-1=54;
Mario.y=54-2=52;
・・・
足される値がどんどん小さくなっていきます。
空中である限りですが・・・
最初のFの値が大きければ高くジャンプできると言うことになります。
===
すでに解答なされていたようなですが、せっかくなので投稿します。^^;

Re: マリオのジャンプについて

Posted: 2011年3月01日(火) 16:12
by マシュマロ
パコネコ、回答してくれて感謝です。
具体的に値を入れてくださってありがとうございます。
おかげで使い方が分かりました。