シュートができるバスケットボールをつくってみよう【cluster用アイテム】

投稿者:

「Creators Guide」は、バーチャルSNS「cluster」で「つくる」ことにチャレンジしてみたい方に向けた導入ガイドです。

Creators Guideで読むことができるすべての情報はこちらにまとめています。


目次

今回つくるもの

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

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

▼ 動画でもつくり方を紹介しています!

サンプルパッケージ

実際にこの記事でつくるアイテムの UnityPackage を配布します。
記事を見ながら、アイテムの構成を確認してみてください。

事前準備

まず、clusterにワールドをアップロードできる環境を事前に用意してください。
準備はこちらを参考にしてください。

はじめてのワールド作成

上記で紹介する方法以外ではテンプレートプロジェクトを利用するのがおすすめです。下記のページからテンプレートプロジェクトをダウンロードして、Unityで開くことで、clusterへアップロードする環境まで一気に準備することができます。

テンプレートプロジェクト|Cluster Creator Kit ドキュメント

ボール を用意する

ボールを「跳ねるようにする」「投げられるようにする」など手順に沿ってつくり方を紹介していきます。
まずはバスケットボールの代わりとなる球体を作成しましょう。

  • Hierarchy で右クリックか上部メニューの「GameObject」から「3D Object→ Sphere」で作成します。
  • Scale は 0.5 に変更します。

ボールが跳ねるように設定する

まずはボールが跳ねるように設定していきます。

  • Project で右クリックもしくは上部メニューの 「Assets」 から「Create→ Physic Material」を作成します。
  •  Physic MaterialのInspectorから、ボールがどれだけ跳ねるのかを決める Bounciness を ”1” に変更します。
Physic Material は、衝突するオブジェクトの摩擦や跳ね返り効果を調整するのに使用されます。
  • 先程追加した Sphere のInspector上にある Sphere Collider の Material に Physic Material を割り当てます。

これだけでボールが跳ねるようになります!

左  Bounciness の値が 0
右  Bounciness の値が 1

ボールを投げられるようにする

次はボールを投げられるようにしていきます。
跳ねるようにしたボールに、以下のコンポーネントを使用していきます。

  • Rigidbody  
  • Movable Item 
  • Grabbable Item
  • Use Item Trigger
  • On Release Item Trigger
  • Item Logic
  • Add Instance 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 に変更するメッセージを作成します。

Item Logic|Creator Kit ドキュメント

  • 最後にボールを進行方向に飛ばすために 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 を設定してください。

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


最後に公式による記事や多くのクリエイターの皆さんによるドキュメントやコミュニティを紹介します。
ぜひ活用して自分だけのワールドを制作してみましょう!

▼ 「Cluster Creator Kit」の全てが分かる公式ドキュメント
Cluster Creator Kit ドキュメントhttps://docs.cluster.mu/creatorkit/

▼ クリエイターによる投稿記事まとめ
ワールド制作部https://note.com/cluster_official/m/m1fd772ab8f45
アバター制作部https://note.com/cluster_official/m/m6b18e343f35c
イベント制作部https://note.com/cluster_official/m/m7155e6f6887f

▼ 分からないことがあればコミュニティを活用してみましょう!
Cluster Creator Community Discord
https://discord.gg/DHQmAfDhkt