This repository was archived by the owner on Jun 6, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Jump
raduwen edited this page Oct 7, 2012
·
4 revisions
====
今回はジャンプさせます。
ジャンプをさせるにはどうしたらいいでしょうか? 幾つか方法はありますが、今回は単純な方法でジャンプさせます。
アニメーションで出てきたプレイヤーにはvxとvyがあります。この変数を使って移動します。
まず目標とする動きをグラフで表わすとこんな感じです。
縦軸がyで横軸がフレームです。時間が経つにつれて画面の上に移動してして頂点まできたら下げたいわけですが、 画面のy軸が逆向きなのでyは減少してから上昇することになります。
これを実装する為にvyのグラフも描いてみました。
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_flag
をtrue
にしてジャンプして宙に浮いてますよ、と覚えておきます。
宙に浮いている間にジャンプの移動処理をしてあげます。
もし、地面の位置までプレイヤーが落下してきたら、
地面の位置までプレイヤーの位置を修正してjump_flag
をfalse
にしてジャンプできるようにします。
これらの処理をまとめたものをjump.rbに用意しました。