Unity事例ノート

UNITY

CharacterControllerに発射機能をつける

キャラクターコントローラーを使った動きに加えて、発射のしくみを実装してみましょう。

WASDキーで移動、スペースキーでジャンプ、クリックするとボールを発射します。

関連記事:
【Unity C#】移動と発射・MainCamera追従を組合わせる
【Unity C#】CharacterController.Moveによるジャンプ移動

CharacterController.Moveで動かす

平面オブジェクトとCubeを作成して、カラーをつけました。

Cubeにキャラクターコントローラーを追加します。

コンポーネントを追加 > 物理 > キャラクターコントローラー

Box Colliderは必要ないので、チェックを外しておきましょう。

PlayerMove.csを作成し、Cubeに追加します。

PlayerMove.csを記述します。

プレイして動きを確認しましょう。

WASDキー(十字キー)で移動、スペースキーでジャンプ。

キャラクターコントローラーとMove()の記述で、まずはプレーヤーの動きは出来上がりました。

ボールの発射位置をつくる

次に、クリックでボール発射する仕組みをつくりましょう。

動いている間にボールを発射するには、キャラクターの前でボールを生成しなければなりません。

空のオブジェクトを作成します。

GameObject(空のオブジェクト)を、CubeのZ方向側の前方に配置します。

上から見たGameObject(空のオブジェクト)の位置。

ここがボールの発射位置になります。

GameObjectをドラッグ&ドロップで、Cubeの中に入れ、親子関係を取ります。

Ballのプレハブを用意

ボールのPrefabデータを用意します。

Sphereオブジェクトを作成し、名前Ballに変更。

黄色のマテリアルカラーをつけました。

BallをPrefab化します。

Ballの元データは削除しましょう。

Ballのプレハブデータにリジッドボディを追加し、重力を使用(UseGravity)はチェックを外します。

動いているキャラクターからのボール発射

BallShot.csを作成し、GameObjectに追加します。

BallShot.csを記述します。

GameObjectのインスペクターを確認します。

BallPrefabのフィールドには、Ballのプレハブを入れます。

速度フィールドは1000にしました。

ゲームプレイしてみましょう。

移動しながらクリックして、ボール発射できていればOKです。

関連記事:
【Unity C#】移動と発射・MainCamera追従を組合わせる
【Unity C#】CharacterController.Moveによるジャンプ移動