「リセット機能」をつくる──リリーもひとりでつくれるもん!〜ミニゲーム編〜 vol.4

「リリーもひとりでつくれるもん!」。ミニゲーム編では、リリーさんが考えたゲームを回を追ってちょっとずつつくっていきます。

本記事では、リリーさんが制作したゲームを同じようにつくることができるように、配信で辿った手順を記事として紹介していきます。
最終的に、タイムアタック付きの落ちてくる消えていく床から逃げるミニゲームワールドが完成します(完成ワールドはこちらで公開されているので、ぜひ遊びに行ってみてください)。

今回は「ゲーム終了時に全員がスタートエリアに戻る機能」と「リセット機能」をつくっていきます(前回の続きとなるので、まだ読んでない方はぜひ前の記事をご覧ください!)。

今回の機能をつくるにあたっては、前回までで作成したギミックをつくり変えたりします。
リリーさんの配信を観ながら、ぜひ一緒に挑戦してみてください!

まずはリセットボタンを押した時に、落ちた人エリアにいる人が最初の位置に戻る機能をつくるための準備をします。
この時点ではリセットボタンがないため、ギミックは動きません。

  • まずは落ちた人エリアにいる人を検知し、最初の位置にワープさせる仕組みをつくります。
    • Hierarchyを右クリック、または上部メニューのGameObejctからCreate Emptyで空のGameObjectを作成します。
    • 落ちた人エリア全体を覆うようにサイズを調整して、is Triggerにチェックを入れてください。
    • 作成した空のGameObjectを選択してInspectorで、Add Componentから「Player Enter Warp Portal」コンポーネントを設定してください。
      • Targetに、最初にプレイヤーが出てくる「Spawn Point」を設定してください。
  • 次はこのギミックがリセットボタンを押された時にだけ動くようにします。
    • 作成した空のGameObjectを選択してInspectorで、Add Componentから「Set Game Object Active Gimmick」コンポーネントを設定してください。
      • Targetは「Global」、Keyは「isNotPlaying」に設定してください。
    • GameObjectのInspectorの名前の左にあるチェックを外して、非アクティブにしてください。

次は、リセットボタンを押した時に、消えてしまったタイルが復活し、再び最初から遊ぶことができるようにする仕組みをつくります。
この仕組みをつくるために、今までに設置したタイルは一度削除し、ボタンによってタイルが生成される仕組みとします。
この時点ではスタートボタンを押した時にタイルを生成する仕組みがないため、ギミックは動きません。

  • ゲーム性を高めるため、時間経過で消えるタイルの消えるまでの秒数のバリエーションをつくります。
  • バリエーションをつくる時は「Prefab Variant」を使うのが便利です。詳しい説明はこちらの記事をご覧ください。
    • Project欄にある、前回までで制作したTileのPrefabを選択し、右クリックから「Create > Prefab Variant」を選択してください。
    • 新しく作成したItem TimerのDelay Time Secondsを設定したい秒数に変えます。
      • 「Tile30」「Tile45」のように消える秒数が分かりやすいようにしておくと後ほど便利です。
  • 次はタイルを生成する仕組みをつくります。
    • Hierarchyを右クリック、または上部メニューのGameObejctからCreate Emptyで空のGameObjectを作成します。
      • 名前は「CreateTile」にしておきましょう。
    • CreateTileを選択してInspectorで、Add Componentから「Create Item Gimmick」を設定してください。
      • Targetは「Global」、Keyは「CreateTile」、Item Templateには、とりあえずTileのPrefabを設定しておきます。
    • 完成したら、HierarchyからProjectにドラッグ&ドロップしてPrefab化しておきます。
  • 最後に並べてあるタイルを削除し、CreateTileに差し替えます。
    • CreateTileを並べるときは、子に同じサイズのCubeを作成してダミーオブジェクトにしておくと並べやすいです。
      • 並べ終わったらCubeは消してください。あとで使う可能性を考えてInspectorからTagを「Editor Only」にするか、非アクティブにする形でもOKです)
    • 並べ終わったら秒数を変えたいCreateTileを選択して、先ほど作成した「Tile30」「Tile45」等のPrefab Variantを設定してください。

待機用足場をつくる

タイルを生成する方式にしたことでプレイエリアにワープした時点では床が存在しないことになってしまうので、スタートボタンを押すための待機用足場をつくります。

  • Hierarchyを右クリック、または上部メニューのGameObejctからCubeを作成します。
  • プレイ中は邪魔になってしまうので、スタートボタンが押されたら消えるようにします。
    • 選択してInspectorで、Add Componentから「Set Game Object Active Gimmick」を設定してください。
      • Targetは「Global」、Keyは「isNotPlaying」としてください。

次は前回までで作成したスタートボタンを改修していきます。
スタートボタンを押した時に、ここまでで作成した「落ちた人エリアにある元の位置に戻すギミックを動作しないようにする」「待機用足場を消す」「タイルを生成する」仕組みが動作するようにします。

  • 「StartButton」を選択しInspectorで、既に設定してある「Interact Item Trigger」で「+」を押してトリガーを2つ追加してください。
    • ひとつは、Targetは「Global」、Keyは「isNotPlaying」、Valueは「Bool」としチェックを外した状態にして「False」にします。
    • もうひとつは、Targetは「Global」、Keyは「CreateTile」、Valueは「Signal」とします。

リセットボタンが押された時に、その時までに残っているタイルやAttackを一回破棄して、新しくゲームを始められるようにする仕組みをつくります。

  • Projectにある、TileとAttackのPrefabをそれぞれ選択しInspectorで、Add Componentから「Destroy Item Gimmick」を設定してください。
    • Targetは「Global」、Keyは「DestroyAll」としてください。
      • 今回新しく作成した「Tile30」等はPrefab Variantにしてあるため、追加した設定も同時に反映されています。

最後にリセットさせる仕組みをつくります。

  • Hierarchyを右クリック、または上部メニューのGameObejctからCreate Emptyで空のGameObjectを作成します。
    • 名前は「ResetGimmick」にします。
  • Inspectorで、Add Componentから「Global Logic」を設定してください。
    • Targetは「Global」、Keyはリセットボタンから受け取る「Reset」としてください。
      • その時点で残っているTileやAttackを消す仕組み、ストップウォッチの表示、落ちた人エリアにある最初の位置に戻す仕組みが動作するように設定します。
        • その時点で残っているTileやAttackを消す仕組み
          • 上段:Keyを「DestroyAll」、Valueは「Signal」
          • 中段:「=」
          • 下段:「Constant」「Bool」としチェックを入れてください。
        • ストップウォッチを止める。
          • 上段:Keyを「Stop」、Valueは「Signal」
          • 中段:「=」
          • 下段:「Constant」「Bool」としチェックを入れてください。
        • ストップウォッチの表示を0秒に戻す。
          • 上段:Keyを「time」、Valueは「Integer」
          • 中段:「=」
          • 下段:「Constant」「Integer」とし「0」としてください。
        • 落ちた人エリアにある最初の位置に戻す仕組みが動作するようにする。
          • 上段:Keyを「isNotPlaying」、Valueは「Bool」
          • 中段:「=」
          • 下段:「Constant」「Bool」としチェックを入れてください。
  • 前回までで作成した「AttackGimmick」を選択しInspectorで、Add Componentから「Item Logic」を設定してください。
    • Targetを「Global」、Keyを「Reset」としてください。
    • 「+」を選択しトリガーを追加してください。
      • 上段:Targetは「This」、Keyは「isPlaying」、Valueは「Bool」としてください。
      • 中段:「=」
      • 下段:「Constant」「Bool」としチェックを外してください。
  • 最後にリセットを行うためのボタンを作成してください。
    • Hierarchyを右クリック、または上部メニューのGameObejctからCreate Emptyで空のGameObjectを作成します。
      • 名前は「ResetButton」としてください。
      • ボタンの見た目をつくるために、Hierarchyを右クリック、または上部メニューのGameObejctから子にCubeを作成してください。
        • ワープボタンと誤って押さないように色を変えたりするのがおすすめです。
    • 「ResetButton」を選択しInspectorで、Add Componentから「Interact Item Trigger」を設定してください。
      • Targetは「Global」、Keyは「Reset」、Valueは「Signal」としてください。

これで完成しました!
今回の記事でゲームの基本的な機能が用意できました。ここからタイルや落とすもののデザインを変えたりすることで、よりゲーム性を高めることができます。

最終回となる次回はアニメーションやパーティクルなどの演出のつけ方を少しだけ解説します!
ブラッシュアップしていきたい方はぜひヒントにしてみてください。

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

Cluster Creators Guide|バーチャル空間での創作を学ぶならをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む