Skip to content
This repository was archived by the owner on Jun 6, 2020. It is now read-only.
raduwen edited this page Oct 7, 2012 · 4 revisions

====

ジャンプ

今回はジャンプさせます。

ジャンプをさせるにはどうしたらいいでしょうか? 幾つか方法はありますが、今回は単純な方法でジャンプさせます。

アニメーションで出てきたプレイヤーにはvxとvyがあります。この変数を使って移動します。

まず目標とする動きをグラフで表わすとこんな感じです。

ジャンプグラフ1

縦軸がyで横軸がフレームです。時間が経つにつれて画面の上に移動してして頂点まできたら下げたいわけですが、 画面のy軸が逆向きなのでyは減少してから上昇することになります。

これを実装する為にvyのグラフも描いてみました。

ジャンプグラフ2

vyは始め負の値でそのまま上昇しつづけます(重力!!)。

これらの式をRubyで書くと、

# ジャンプする力と重力
jump_power = 10
G = 0.3

# ジャンプしたときに値を負にする
vy = -1 * jump_power

y += vy # vyは最初は負だけどGでどんどん正になるので、
vy += G # yは最初減少して、あとで上昇する

みたいな感じになります。 jump_powerはプレイヤーに持たせてあります。毎度のようにken.jump_power = 10みたいに変更ができます。

これでグラフみたいな動きをするようになります。


さて実際にジャンプさせるとき、宙に浮いているかどうかがわからないと空中でもジャンプできてしまいます。 なので、プレイヤーにjump_flagというのも持たせてあります。

ボタンが押されたときにjump_flagtrueにしてジャンプして宙に浮いてますよ、と覚えておきます。 宙に浮いている間にジャンプの移動処理をしてあげます。

もし、地面の位置までプレイヤーが落下してきたら、 地面の位置までプレイヤーの位置を修正してjump_flagfalseにしてジャンプできるようにします。

これらの処理をまとめたものをjump.rbに用意しました。


Home | アニメーション - ジャンプ - 文字列を表示する

Clone this wiki locally