Unity事例ノート

UNITY

360°全方位に向けて発射

3D空間の中で、全方位に向かって発射できる仕組みを作りましょう。

今回はなるべくスクリプトを書かず、Third Person Controllerを利用した方法をご紹介します。

マウスカーソルの動きで360度方向転換して、クリックでボールを発射します。

関連記事:
【Unity C#】定位置からボールを発射させるしくみ
【Unity C#】マインクラフトのようなプレーヤー操作
【Unity C#】ドラッグした方向へ飛ばす

Third Person Controllerを利用する

アセットストアから、Third Person Controllerをのフリーバージョンをインポートします。

Third Person Controller - Basic Locomotion FREE

Assetsの中に、ダウンロードデータが追加されています。

MainCameraのチェックを外します。

Assets > Invector-3rdPersonController_LITE > Prefabs を開きます。

この中の、vThirdPersonCamera_LITEを、ヒエラルキーにドラッグ&ドロップしましょう。

インスペクターから設定を変更します。

X MouseSensitivityと、Y MouseSensitivityは、マウスによる回転の感度です。

Y Min Limitと、Y Max Limitは、Y方向の回転の限界値になります。

続いて、ThirdPersonController_LITEをヒエラルキーにドラッグ&ドロップします。

このように、人物の3Dモデルだけが、非表示になっています。

リジッドボディを展開し、位置を固定にチェックを入れましょう。

ボール発射のスクリプト

Spereオブジェクトを作成し、カラーをつけます。

リジッドボディを追加します。

Sphereをプロジェクトにドラッグ&ドロップして、プレハブ化します。

Sphereの元データは削除しておきます。

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

BallShot.csを記述しましょう。

ThirdPersonController_LITEのインスペクターに、プレハブのフィールドが出来ています。

ここに、Sphereのプレハブデータを追加します。

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

マウスカーソルを動かしながら、クリックで全方位に向けて発射します。

ScreenPointToRay(Input.mousePosition)では、カーソルの座標に向けて、ray(光線)を飛ばしています。

rayの方向情報を取得して、そこに向けてPrefabを飛ばします。

関連記事:
【Unity C#】定位置からボールを発射させるしくみ
【Unity C#】マインクラフトのようなプレーヤー操作
【Unity C#】ドラッグした方向へ飛ばす