Unity13話 2Dアクションの2段ジャンプの作り方【大体完全版】

Unity

今日は2Dだよ!

Cube君
Cube君

この記事のタイトルの大体完全版って矛盾してるよね。

 

チョッピー
チョッピー

気にしない。

最近は3Dじゃなくて2Dを使ってゲームを作ってるけど。
あんまり違いがなくて使いやすかったよ。というかZ軸が無くなるから楽。

というわけで。ダブルジャンプの作り方を伝授しよう。
Unityの記事が出てなかったのは人に見せるようなコードがなかなか組めなかったからだよ。

で、やっと組めたスクリプトでこんなジャンプができたよ!

じゃ。行ってみよう!

作っていくといろんな問題が…。

ジャンプを作ってみているとみんなが当たるであろう壁。
それに見事に引っ掛かりまくって作ったダブルジャンプ。

完成までの道のりは思ったよりも短かった…。
結構ぐちゃぐちゃしたスクリプトで書きなれた人には『なんだこれ』って思われるだろうけど。
一応ちゃんと動いたんでOKってことにしといて!

それじゃ覚えてるだけ書いていってみよう。

とりあえず普通にジャンプさせる

ここはネットで調べたやつのコピペ+ちょっと手を加える。
これで何とかして動かした。

歩くのも調べてきて気に入ったやつを使って動かした。
プレイヤーはとりあえず〇に向いている方向のわかる棒を付けただけの急ごしらえ。

ちなみに棒のCollider2Dは抜いてあるよ。だから判定は〇だけ。

で。このプレイヤーにこんな感じのをスクリプトをアタッチした。

これじゃ移動は大丈夫だけどジャンプは問題だらけ!
動かしてみると分かる。

無限ジャンプ。上昇中に押すと超加速。下降中に押すとちょっと浮くだけ。
使い物にならねぇぇぇぇ!

とりあえず超加速&謎浮遊から直していこう

超加速の理由は簡単。加速に加速を足して超加速!
みたいなノリでできています。

そこで思いつく方法は…。そう!最初の加速消せばいいんじゃね?
ってことはジャンプの前に一瞬あらゆる速度的なのを0にすればいいんじゃね?

というわけで。

こんな感じに。rb2d.velocity = new Vector2(0, 0);で一瞬静止させています。
これでOK。超加速の能力は封じられた…。

ジャンプ回数制限を付けよう

今は無限にジャンプができるんでジャンプ制限を付けよう。
今回は2段ジャンプだね。ちょっといじれば3段とかにも簡単に変えられるんで。
あとこの制限のアイデアも他の人のを参考にしました。

でもちょっとだけ問題があって…。
空中のジャンプじゃなくて、全部のジャンプの回数だから…!

崖をジャンプせずに降りる→ジャンプする→もう一回ジャンプできる
って感じになったんだよ。もうサクッと方法を教えるからそのスクリプトは書かなくてもいいよね!

俺は、地上でジャンプ→空中で1回が作りたくて、空中2回はできるだけ回避したいわけよ。
ざっくり言うとスマブラみたいな。カービィは5回くらいジャンプできる?

それを実現するために、とりあえず接地判定用のTriggerをつけよう。

下の緑の四角だね。
で、下の緑にはこんなスクリプト。

で、さっきまで使ってたPlayerのスクリプトをこうしよう。

ええと。書き忘れてたけど、Unityの方でPublicにしてるやつにドラッグアンドドロップで対応させる的なこともしときましょう。

多分これでちゃんと思ったように動くはず!
最初と同じ動画だけど…

こんな感じのジャンプになるはず!(最後の部分はジャンプボタンを連打してます)
よし。完璧。

終わりに

ある程度使えるジャンプということで。
組み方次第で楽に結構いい感じのジャンプが組めるっていう発見ですね。

調べて改造だけである程度のスクリプトは組めるんでみんなもUnityやろう。

それでは!

コメント