この記事では「弾が出る銃」をつくる方法を紹介します。
仕組みが分かると、出る弾を変えたり、スピードを変えたりと色々な応用ができるようになるので、ぜひ試してみてください!

掴めるアイテムをつくる
まずは、銃として用意したモデルを持って使えるようにアイテムとして持てるようにします。
- Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで新しい空のGameObjectを作成します。名前を「Gun」とします。
- Gunの子に用意したモデルをドラッグ&ドロップしてください。
- こうすると、後から機能はそのままにモデルの差し替え等がしやすくなります。
- Gunを選択して、Inspectorを開き、Add Componentから「Grabbable Item」コンポーネントを追加します。
- Colliderを用意して、Grababble ItemのGripにドラッグ&ドロップすると持った時に掴む部分や方向を指定できます。

今回はこんな感じで掴めるようにしました!

「弾が出る」ギミックをつくる
次は早速「弾が出る」ギミックをつくっていきます!
銃に「使う」機能をする
まずは銃に「使う」機能を追加していきます。
- 「Gun」を選択し、Inspectorを開き、Add Componentから「Use Item Trigger」コンポーネントを追加します。
- Use Item Triggerは掴んでいるアイテムを使う機能と使うのをやめる機能を追加できるものです。
- 今回は「使う」機能のみ追加します。
- 「Down Triggers」から+ボタンで項目を追加し、Targetを「This」、Keyを「fire」、Valueを「Signal」と設定してください。

銃に「弾が出る」機能をつくる
次は「使う」のメッセージを受け取り「弾が出る」ギミックをつくります!
- 「Gun」を選択し、Inspectorを開き、Add Componentから「Create Item Gimmick」コンポーネントを追加します。
- Create Item Gimmickを新しくアイテムを生成するコンポーネントです。
- Targetを「This」、KeyはUse Item Triggerで設定した「fire」、そして弾を出したい場所のColliderを用意してSpawn Pointにドラッグ&ドロップしてください。

後はItem Templateに生成したい弾のPrefabを設定することで弾が出るようになります。
「弾」のPrefabを用意する
今回は3D ObjectのCapsuleを弾に見立てて用意しました。
お好きな3Dモデルやアセットを利用してももちろんOKです!
- Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで新しい空のGameObjectを作成します。名前を「Bullet」とします。
- Bulletの子に用意したモデルをドラッグ&ドロップしてください。
- Bulletには「Movable Item」を設定してください。またRigidbodyもつけましょう。
- 「Movable Item」がついていないと、他のプレイヤーとアイテムの位置の同期ができなくなります。
- 完成したらHierarchyからProjectへドラッグ&ドロップしてPrefab化してください。
- Prefab化ができたらもう必要ないのでHierarchyからはBulletを削除しましょう。
- Prefabが完成したら、先ほどGunに設定した「Create Item Gimmick」内の「Item Template」にBulletのPrefabをドラッグ&ドロップしてください。

これで弾を撃ってみると……

下に落ちてしまいます。ただ、これで正解です。
今の弾には推進力がないため、前に飛びません。なので、弾自体に推進力をつけることで、前に飛ぶことができるようにします。
弾に推進力を設定する
次は弾に推進力を設定していきます。
- つくった弾のPrefabをダブルクリックして、Prefabの編集をしていきます。
- Bulletを選択して、Inspectorを開き、Add Componentから「On Create Item Trigger」コンポーネントを追加します。
- こちらのコンポーネントで生成されたときにギミックを発動させ推進力が追加されるようにしていきます。
- Targetは「This」、Keyは「shot」、Valueは「Signal」を設定してください。
- 同じくBulletのInspectorで、Add Componentから「Add Instant Force Item Gimmick」を追加します。
- Add Instant Force Item Gimmickは瞬間的な力を加えるギミックです。
- Targetは「This」、Keyは先ほどと同じく「shot」を設定してください。
- Spaceは今回は弾自体に推進力を与えるので「Bullet」を設定します。Bulletを選択して、Spaceにドラッグ&ドロップしてください。
- Forceでどのくらいの力を加えるかを設定できます。今回は前に飛ばしたいのでZ軸に適当な数字を入れます。
- Bulletを選択して、Inspectorを開き、Add Componentから「On Create Item Trigger」コンポーネントを追加します。
- Prefabの編集が済んだら、Sceneウィンドウ右上にある「Save」を押すか、Ctrl+S(MacはCmd+S)でPrefabを保存してください。

これで弾が出る銃の完成です!

こちらをベースにさまざまなギミックをつけることで、より楽しめるアイテムをつくることができます。
例えば、撃った時に音を出したい場合は下記の記事を参考にしてみてください。
パーティクルの演出を組み合わせても良いかもしれません。
ぜひ色々な応用を試してみてください!