今回つくるもの
今回はバスケットボールができるアイテム(の元)を作成していきます。
ロビーにもあったこちらですね。


本記事で紹介する、 Cluster Creator KitやUnityの機能であるRigidbodyやPhysic Materialを用いたつくり方を覚えればロビーに置いてあるこのアイテムも再現可能になります。
つくり方をぜひ覚えてみてください!

▼ 動画でもつくり方を紹介しています!
サンプルパッケージ
実際にこの記事でつくるアイテムの UnityPackage を配布します。
記事を見ながら、アイテムの構成を確認してみてください。
ボール を用意する
ボールを「跳ねるようにする」「投げられるようにする」など手順に沿ってつくり方を紹介していきます。
まずはバスケットボールの代わりとなる球体を作成しましょう。
- Hierarchy で右クリックか上部メニューの「GameObject」から「3D Object→ Sphere」で作成します。
- Scale は 0.5 に変更します。
ボールが跳ねるように設定する
まずはボールが跳ねるように設定していきます。
- Project で右クリックもしくは上部メニューの 「Assets」 から「Create→ Physic Material」を作成します。
- Physic MaterialのInspectorから、ボールがどれだけ跳ねるのかを決める Bounciness を ”1” に変更します。

- 先程追加した Sphere のInspector上にある Sphere Collider の Material に Physic Material を割り当てます。
これだけでボールが跳ねるようになります!

右 Bounciness の値が 1
ボールを投げられるようにする
次はボールを投げられるようにしていきます。
跳ねるようにしたボールに、以下のコンポーネントを使用していきます。
- Rigidbody
- Movable Item
- Grabbable Item
- Use Item Trigger
- On Release Item Trigger
- Item Logic
- Add Instant Force Item Gimmick
まずは投げたボールが落ちていくなど物理的な動きになるように設定していきます。
- Add Component から Grababble Item を追加してください。これだけで必要なコンポーネントであるRigidbody(物理演算のために必要) とMovable Item(ワールド・イベント内でユーザー間で動きを同期させるために必要)が自動的に追加されます。
- また、ボールはある程度転がった後に止まってほしいため、オブジェクトに影響する空気抵抗の大きさを設定できる Drag の値を 0.25 に変更します。

次はボールを持てるようにするために先ほど追加したGrabbable Item を設定していきます。
- ボールを握る位置となる空のオブジェクトを、ボールの子に Create Empty で作成します。
- 名前はGrabPointにします。
- 作成した空のオブジェクトを Sphere の側面に位置するように配置し、ボールに追加した Grabbable Item の Grip の欄にドラッグ・アンド・ドロップで割り当ててください。
Movable Item|Creator Kit ドキュメント
Grabbable Item|Creator Kit ドキュメント

次に掴んだボールを投げられるように設定していきます。
大きくは「ボールを使ってから離すと飛ぶようにする」「ボールを手放したことを通知する」「ボールを持っており、トリガーを引いた後のみにボールを飛ばす」「ボールを進行方向に飛ばすため」の処理を設定していきます。
- まずボールを使ってから離すと飛ぶようにするために Use Item Trigger を利用します。
- Target を This 、Key を ”throw” 、Value は Bool に変更しチェックマークを入れます。
Use Item Trigger|Creator Kit ドキュメント

- 次にボールを手放したことを通知するために On Release Item Trigger を使います。
- Target を This 、Key を ”ThrowUp” 、Value は Signal に変更します。
On Release Item Trigger |Creator Kit ドキュメント

- ボールを持っており、トリガーを引いた後のみにボールを飛ばしたいため、Item Logic を使用します。
- 「+」を押してメッセージ欄を2つ作成します。
- 1つ目は Bool 型である “throw” が True のときに Signal 型の ”AddForce” を通知するメッセージ。
- 2つ目は再びボールを持ったときもう一度投げられるようにするために、Bool 型の ”throw” を False に変更するメッセージを作成します。

- 最後にボールを進行方向に飛ばすために Add Instant Force Item Gimmick を追加します。
- Target を This 、Key を ”ThrowUp” に変更します。
- 加える力の値となる Force に ( x, y, z ) = ( 0, 5, 7.5 ) を代入してください。
Add Instant Force Item Gimmick |Creator Kit ドキュメント

これでボールが投げられるようになりました!

ゴール演出をつくる
最後に、ボールが入った時に音が鳴るゴールを作成します。
- 細長い Cube を4つ作成し、枠を作成します。
- 枠の真ん中にボールがゴールに入ったことを判定するための Cube を作成し、名前を ”GoalTrigger” に変更します。
- 何かが通った判定を取るために GoalTrigger の Box Collider の欄にある Is Trigger をオンにしてください。

次にボールが入った時に鳴るゴール音を作成します。
- Hierarchy で右クリックか上部メニューの「GameObject」から「Create Empty」を作成します。
- 作成した空のオブジェクトに Add Component から Play Audio Source Gimmick を追加します。
- Target を Item 、Key を ”GetGoal” 、Item に先ほど作成した GoalTrigger を割り当てます。
Play Audio Source Gimmick |Creator Kit ドキュメント

- ワールド入場時に音が鳴らないように Audio Source コンポーネントの Play On Awake のチェックマークを外しておきます。
- Audio Source内の AudioClip には好きな音を割り当ててください。テンプレートワールドのプロジェクトには効果音も入っているため、こちらもおすすめです。
テンプレートワールド『アスレチック』のススメ!! |Creator Guide

最後にボールがゴールに入った時に演出が起きるようにします
- GoalTriggerに Add Component から On Collide Item Trigger を追加します。
- 追加したら、「+」を押してTargetを This、Keyに GetGoal、Valueに Signal を設定してください。

後はゴールの位置を適切な場所に設置すれば完成です!
