前回は、Unity のトップビュー形式のゲーム作りをサポートする「TopDown Engine」アセットが提供する Weapon コンポーネント派生の 5 種類の武器コンポーネントの特徴を紹介しました。
前回の記事:Unity TopDownEngine Weapon(武器)の派生5種類の特徴 | Compota-Soft-Press
今回は自作ゲームで使いたい武器「消しゴム銃」を作る参考として、TopDown Engine の ProjectileWeapon コンポーネントを用いた 3D 向けの銃を公式レシピを元に作成します。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。
消しゴム銃の仕様
消しゴム銃は消しゴムを発射する銃で、以下の仕様を持ちます。
これを TopDown Engine の ProjectileWeapon コンポーネントを用いて作成したいと思います。
- 連射できる
- 一定数おきにリロード(最大連射数は増減する)
- マウス操作の場合は、操作キャラからマウスポインタの方向に、左ボタン押下時に連射
- ゲームパッドの場合は、右スティック(SecondaryMovement)を傾けるとそちらに連射
- 弾数は無制限
- 敵・移動可能オブジェクトに当たるとそれをノックバックさせる
- ダメージは与えない
- 壁に当たると何度か跳弾する
- 外観は筆箱をモチーフにしている(銃と弾どちらも外観の変更の必要あり)
ベースに ProjectileWeapon コンポーネントを選んだ理由
消しゴム銃のベースとして数ある TopDown Engine の Weapon 派生コンポーネントから ProjectileWeapon を選んだのは、消しゴム銃の仕様と一番似ていたからです。
使用した TopDown Engine の Scene : Assets/TopDownEngine/Demos/Minimal3D/MinimalSandbox3D.unity
参照:TopDown Engine: MoreMountains.TopDownEngine.ProjectileWeapon Class Reference
これにより、仕様の3項目はクリアできます。
- 連射できる
- 一定数おきにリロード(最大連射数は増減する)
- マウス操作の場合は、操作キャラからマウスポインタの方向に、左ボタン押下時に連射
レシピに従い ProjectileWeapon コンポーネントを付加
公式のレシピに従って ProjectileWeapon ベースのプレハブを作成します。
Recipes | TopDown Engine Documentation #Creating a simple projectile weapon
- fresh install of TDE v1.10.1 on 2019.3.3f1
- open the MinimalScene3D demo scene
- create a new empty game object, name it MyWeapon
- add a ProjectileWeapon component to it
- add a WeaponAim3D component to it, set AimControl:PrimaryMovement
- add a MMSimpleObjectPooler component, MutualizeWaitingPools:true, GameObjectToPool:LoftAssaultRifleBullet
- create a new cube, remove its BoxCollider, nest it under MyWeapon at 0,0,0, name it MyWeaponModel
- drag MyWeapon into the project panel somewhere, to make it a prefab
- select the MinimalCharacter prefab, set MyWeapon as its InitialWeapon
- press play, enjoy your cube gun!
2 番目の MinimalSample3D シーンを開きます。
シーンのアセットパス : Assets/TopDownEngine/Demos/Minimal3D/MinimalScene3D.unity
開いた MinimalScene3D シーンに空のゲームオブジェクトを作成し、MyWeapon にリネームします。
MyWeapon ゲームオブジェクトに銃の機能を実現するコンポーネントを付加
作成した MyWeapon ゲームオブジェクトに3つのコンポーネントを追加し、一部設定を変更します。
- ProjectileWeapon コンポーネントを追加します。
- WeaponAim3D コンポーネントを追加し、AimControl を PrimaryMovement に変えます。
#SecondaryMovement で良いと思うのですが公式のレシピに従います。 - MMSimpleObjectPooler コンポーネントを追加し、Mutualize Waiting Pools を ON にします。
Game Object To Pool で、サンプルの LoftAssaultRifleBullet を Assets タブ内から検索・選択します。
銃の外観を表す Cube を下位に追加
銃の機能が付加できたので、その下位に銃の見た目として Cube を配置します。
MyWeapon ゲームオブジェクトを右クリックしてポップアップメニュー 3D Object → Cube で下位に Cube を追加して、 MyWeaponModel にリネームしました。
※ Transform の Position, Rotation がすべて 0 になっていることを確認しましょう。
Cube に最初から付加されている Box Collider コンポーネントは不要なので削除します。
作った銃のプレハブ化
これで銃の機能を付加した MyWeapon と、その下位に外観を表す MyWeaponModel が作成できたので、Hierarchy ウィンドウから Project ウィンドウの任意のアセットフォルダにドラッグ&ドロップしてプレハブを作成します。
Hierarchy ウィンドウの MyWeapon は削除しましょう。
MyWeapon を変更したい場合は、 Project ウィンドウの MyWeapon プレハブをダブルクリックすることで Hierarchy や Inspector ウィンドウで編集できます。
操作キャラクターに作った銃を設定
作った銃をテストするために MinimalScene3D シーンの操作キャラクターに設定します。
操作キャラクターは「MinimalCharacter」という名前のプレハブなので、Project ウィンドウの検索ボックスで名前を入力して検索しましょう。
変更する前に、そのプレハブを Ctrl + D などで複製しておいても良いでしょう。
MinimalCharacter を選択して、 Inspector ウィンドウの CharacterHandleWeapon コンポーネントの Initial Weapon プロパティに、先ほど作った銃のプレハブ MyWeapon をドラッグ&ドロップして設定します。
テストプレイ
MinimalScene3D のシーンを再生しましょう。
WASD で移動、F でダッシュ、左クリックを押していると一定間隔で向いている方向に射撃することができました。
まとめ
今回は、 Unity の見下ろし型ゲームの作成支援アセット「 TopDown Engine 」の公式ガイド(レシピ)を参考にして、空のゲームオブジェクトから射撃する銃のプレハブを作成し、そのテストのために操作キャラクターに設定し、エディタ上でテストプレイするところまでの手順を紹介しました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- TopDown Engine | システム | Unity Asset Store
- Recipes | TopDown Engine Documentation #Creating a simple projectile weapon
記事一覧 → Compota-Soft-Press
コメント