時間と高さでジャンプをコントロールする方法が意外に難しい


unityでジャンプというと
Rigidbody+addforceが定番。というか、これはunityの売りだったりしますが・・・。
ただ、結構コントロールしにくいんです…。
今回は、その理由とそれをコントロールする方法を紹介。

Rigidbody+addforce、その弱点。

通常、ジャンプを付けるとなると、

(rbはRigidbody型)
aを押すと上向きにジャンプするスクリプトです。
ところが、addForceを使うと高さやジャンプにかかる時間がコントロールできなんです。ということはふわっとしたジャンプの表現が難しい。
addforceを使うと、簡単にジャンプはできるんだけどその制御は決して簡単ではない。ということです。

script手書き

そこでscript手書きしちゃいましょう。

①では、キーボード入力(今回は”a”)を感知し、ジャンプ動作中であることを示す”active”にtrueを入力しています。
activeがtrueの時には、②で移動位置の計算を行っています。
②の式は
$$y={v_0}t-\frac{1}{2}{g}{t^2}$$
をスクリプト化したものです。
そして最後に③でpos.yが0を下回るとpos.y=0、activeをfalseに変更して終了となります。
スクリプトで書くのは確かに大変なんですが、動きをかなり自在に扱うことができます。
それは次回。

まとめ

unityでジャンプ動作をスクリプト化するのは決してむずかしくありません。
そして、自在度が上がるので表現の幅が広がります。
ぜひトライしてみてください。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

トップへ戻る