Unity事例ノート

UNITY

カメラを360度回転させて発射

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

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

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

関連記事:
定位置からボールを発射させるしくみ
マインクラフトのようなプレーヤー操作
ドラッグした方向へ飛ばす
弾が消えなければ次を撃てなくする
マウスカーソルを追って360度回転するカメラ
MainCameraの回転量をドラッグで変える

360度マウスカーソルを追うMainCamera

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

Third Person Controller - Basic Locomotion FREE

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

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

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

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

これがMainCameraの代わりに使用するカメラになります。

位置と回転を0にリセットします。

X MouseSensitivityと、Y MouseSensitivityは、マウスカーソルの回転感度になります。

操作性に応じて、調整しましょう。

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

こちらも位置と回転を0にリセットします。

今回は、キー操作で人物3Dモデルを動かせないようにしますので、位置を固定しておきます。

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

人物のオブジェクトは表示させたくないので、Mesh_LODのチェックを外します。

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

ボール発射のスクリプト

Spereオブジェクトを作成し、リジッドボディを追加します。

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

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

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

BallShot.csを記述します。

プレハブのフィールドに、Sphereのプレハブデータを追加します。

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

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

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

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

関連記事:
定位置からボールを発射させるしくみ
マインクラフトのようなプレーヤー操作
ドラッグした方向へ飛ばす
弾が消えなければ次を撃てなくする
マウスカーソルを追って360度回転するカメラ
MainCameraの回転量をドラッグで変える

SCHOOL教室案内