概要

こんにちは!Qitzの平田です!

前回に続いて、今回はUnity公式の2Dアクションチュートリアルを徹底的に丁寧に解説して行きます!

https://learn.unity.com/tutorial/character-controller?uv=2019.3&projectId=5ea809f0edbc2a00215f1fa5#5ea81ee4edbc2a00215f245c

Unity公式Boltのチュートリアル(英語)のキャラクターがジャンプをするところまで作って行きたいと思います!

早速ジャンプ機能を入れてみる

ここの処理はボタン入力に応じて、PlayerのRigidbodyに力を加えるだけで実装ができます。

Jumpというジャンプ力の値を設定するための変数を作る

VariablesのObjectタブを選択し

Name:Jump

Type:Float

Value:12

に設定し作成します。

Jump入力受付用のGraphを組んでみます

FlowGraphの空いているところに下記のUnit達を作成してつなげます。

・On Button InputのNameは Jumpと入力

(Jumpはディフォルトでスペースキーに割り当てられています)

・Add ForceのModeを Impulseに設定

(衝撃を加えるようなモードになります。)

この処理は何を行っているのか?

1:GetVariableでJumpの変数を取得してVecor Createで(0,Jump)の値を作成する

2: OnButtonInputでボタン入力を受け付ける

3: 入力に応じてAdd Forceに1で作成した値を加える

再生してみます!

ボタン入力に応じてJumpを行うようになりました。

地面に接地しているかどうかの判定を作成する

ここでは、プレイヤーが地面に足がついているかどうかの判定処理を作成するところを作ります。

公式チュートリアルより抜粋

Platfromが地面に設定されているみたいです。

また、Raycastとは、対象からRay(光線)を飛ばして光線に当たったオブジェクト(コライダーをつける必要あり)を取得する仕組みだったりします。

ここでは、PlayerがPlarformに接地しているかどうかを見ていきます。

早速接地判定用のGrapを作ってみます!

まずは、Circle Castを作成する

何もないところで右クリックして検索欄に、 Circleと入力

いろいろと候補が出てくるのですが、ここで

Circle Cast(Origin,Radius,Direction,Distance,Layer Mask)を選択します。

CircleCastのパラメーター説明はざっくりとこんな感じです。

うーん・・・いっぱいありますね・・・

取り急ぎは、実際に作ってみてどのような値を設定していくのか見ていきます。

判定用のPlatformsレイヤーを作成して適用する

ここでは、Platformsレイヤーを作成して実際にステージに適用してみます。

どこでも良いのでInspectorのLayerの欄を選択します。

そして、AddLayerを選択

Platformsと入力してLayerを追加します。

Hierarchy中のLevelを選択して、InspectorからLayerを作成したPlatformsに変えます。

ダイアログの選択は [Yes,change children]を選択してLevel配下のオブジェクトのLayerも変えてやります。

Circle Castに値を設定+つなげてみる

では、Circle Castの値をこんな感じにつなげてやって設定を行います。

このCircle Castの判定のGraphを読み解いてみる

このGraphの設定は大体以下のような物になっています。

1: 自分の位置から(Origin)

2: 0.3の厚さで光線を(Radius)

3: 下向きに投げ(Direction)

4: それが1.1単位以内に(Distance)

5: Platformsレイヤー上のオブジェクトに(LayerMask)

当たるかどうかを確認する。(CircleCast)

という設定になっています。

次回

次回は今回作ったCircleCastを使い空中にいるかどうかや、アニメーションの切替などを行って行きます。