「時間で消える床」と「落ちた人エリアにワープするギミック」をつくる──リリーもひとりでつくれるもん!〜ミニゲーム編〜 vol.1

毎月25日開催のアバターの日などでMCをつとめるリリーさんがUnityでのワールド制作に挑む「リリーもひとりでつくれるもん!」。ミニゲーム編では、リリーさんが考えたゲームを回を追ってちょっとずつつくっていきます。
そこで、本記事では、リリーさんが制作したゲームを同じようにつくることができるように、配信で辿った手順を記事として紹介していきます。

リリーさんの配信を観ながら、ぜひ一緒に挑戦してみてください!

※このゲームはシリーズを通して完成となるため、本記事で紹介する時点ではギミックとして未完成になる場合もあります。

時間で消える床をつくる

まずは「時間で消える床」を作成します。端から徐々に床が消えていくことで、歩けるエリアがどんどん狭くなり、時間を追うごとにゲームの難易度を上げることができるようになります。

それでは、早速つくっていきます!
まずはベースとなる床をつくっていきます

  • Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで空のGameObjectを作成します。
    • 名前は「Tile」にしておきます。
  • 次は床の見た目をつくっていきます
    • 「Tile」の子に見た目となるオブジェクトを追加します。
      • Hierarchyを右クリック、または上部メニューのGameObjectからCubeを追加します。スケールを良い感じに調整しましょう。
      • この際、Cube上面がTileの原点になるようにすると色々管理しやすいです!(デフォルトCubeの場合はPosition Y = -Scale Y / 2)
      • また、余力があればCubeのBox Colliderを削除し、別途GameObjectを作成して見た目と別のコライダを設定しておくと、後ほど見た目やコライダーの調整が楽になります!詳しくはこちらの記事をご覧ください。

次は、時間で消える機能をつくっていきます。

  • 「Tile」を選択してInspectorで、Add Componentから「Item Timer」コンポーネントを設定。
    • Targetを「Global」、Keyを「Start」に設定します。
    • Delay Time Secondsで何秒後に消えるかを設定できます。ひとまず15秒後に設定しようと思うので、「15」と記入します。
    • Triggers下の+ボタンを選択して、Targteを「Signal」、Keyは消える機能なので「Destroy」としておきましょう。
  • 続けて「Tile」を選択したままInspectorで、Add Componentから「Destroy Item Gimmick」を設定してください。
    • Targetは「This」、KeyはItem Timerと同じ「Destroy」とします。

これで時間で消える機能は完成です!

使いやすいようにPrefab化しておきます。こういった同じアイテムを色々なところで使う場合はPrefabにしておくと便利です。
「どういう風に便利なの?」と詳しく知りたい方はこちらの記事をぜひご覧ください。

  • 「Tile」を選択し、Projectへドラッグ&ドロップしてPrefab化します。
    • Prefab化できたらScene上のものは一旦削除しましょう。

ここからこのPrefabを敷き詰めていきます。

  • まずは親となるGameObjectを作成します。
    • Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで空のGameObjectを作成します。
      • 名前は「PlayArea」としておきます。
        • PlayAreaの子に、Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで空のGameObjectを作成します。
          • 名前は「Tiles」にします。
            • Tilesの子にProjectからドラッグ&ドロップしてPrefabを配置します。
              • 地道に配置していっても良いですが、複数のPrefabを整列して配置するには、設置したPrefabを選択してCtrl+Dで複製、数式を使って並べるのが効率が良いです。
                こちらの記事を参考に試してみてください。
        • あとは、個別に選択して先ほど設定したItem TimerのDelay Time Secondsを変更してそれぞれ消える時間を変えていきます
          • Prefab化がされていないとうまく複数選択されないことがありますので、一括して変更等ができない場合はPrefabになっているかどうか確認してみてください。

これで消える床の準備は完成です。

スタートボタンをつくる

今の状態では、床が消えることはありません。「何かしらのアクションを起こしてから●●秒後に床が消える」というギミックなので、「何かしらのアクション」が必要になります。

なので次は、インタラクトすると「何かしらのアクション」を起こすことができるスタートボタンをつくります。この形式以外にも色々な形で実装することができるので、気になる方はこちらの記事をご覧ください。

  • Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで空のGameObjectを作成します。
    • 名前は「StartButton」としておきます。
    • 「StartButton」の子にボタンの見た目となるオブジェクトを追加します。
      • Hierarchyを右クリック、または上部メニューのGameObjectからCubeを追加します。スケールを良い感じに調整しましょう。
  • 「StartButton」を選択してInspectorで、Add Componentから「Interact Item Trigger」コンポーネントを追加してください。
    • Targetは「Global」、KeyはTileのItem Timerに設定したものと同じ「Start」、Valueは「Signal」を設定します。

これで完成です!
実行してスタートボタンを押すとタイルが設定した時間で消えていくようになります。

落ちた人エリアにワープするギミックをつくる

最後に床が落ちた後に元に戻るだけでは面白くないので、落ちた人が「落ちた人エリア」にワープするギミックをつくってみましょう。

まずは「落ちた人エリア」をつくっていきます。

  • Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで空のGameObjectを作成します。
    • 名前は「GameOverArea」として、落ちた人エリアに関するGameObjectはこのオブジェクトの子につくっていくと、後々便利です。
  • 好きなように「落ちた人エリア」をつくってみてください。

これで準備は完了です!
次はワープするギミックをつくっていきます。

  • まずは落ちた人エリアへのワープ先をつくります。
    • Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで空のGameObjectを作成します。
      • 名前は「GameOverSpawn」にして、落ちた人エリアの上に来るように移動させましょう。
  • 次はPlayAreaの下にワープギミックをつくっていきます。
    • まずは、プレイヤーが落ちたことを感知する機能をつくります。
      • Hierarchyを右クリック、または上部メニューのGameObjectからCreate Emptyで空のGameObjectを作成します。
        • 名前は「Respawn」にして、Tileの下の方に来るように移動させてください。
          • このときDespawn Heightより上に来るようにしてください。Despawn Heightの方が上になっていると、先にそちらが起動して最初の位置に戻ってしまいます。
        • 「Respawn」を選択しInspectorで、Add Componentから「Box Collider」コンポーネントを追加します。
          • 「Box Collider」コンポーネントにプレイヤーが入るとワープギミックが起動します。なので、Play Areaとピッタリのサイズではなく、大きめにしておくと良いです。
            • サイズ調整はInspectorの「Box Collider」コンポーネントのEdit Colliderで調整することができます。
          • Respawnを選択しInspectorで「Box Collider」コンポーネントのIs Triggerにチェックを入れます。
            • こうすることでプレイヤーが「Box Collider」を通り抜けるようになります。通り抜けないと「Box Collider」コンポーネントにプレイヤーが入ったことがわからなくなってしまうので、忘れずにチェックを入れましょう

  • 最後に、「Respawn」を選択しInspectorで、Add Componentから「Player Enter Warp Portal」コンポーネントを追加してください。
    • Targetに先ほどワープ先位置として作成したGameObejctである「GameOverSpawn」を指定してください。

これで完成です!
実行してプレイエリア内で落下すると落ちた人エリアにワープするようになります!

今回はここまでになります。
「時間で消える床」と「落ちた人エリア」と「ワープするギミック」を作成したことで、なんとなくゲームらしくなってきましたね。
次回の記事では、さらにゲーム性を高めるため「タイムアタック機能」「全員落ちたらタイムアタックを終了する機能」をつくっていきます!

記事をシェアしてワールド制作を盛り上げよう!