ゲームにトレードオフの要素を入れると、プレイに深みが増します。リスクを取ってリターンを得るか、それとも無視して先に進むかの判断をプレイヤーに委ねることで、遊びに幅が生まれます。
今回はその要素のひとつとして、タイムを回復させるアイテムを追加します。アイテムを到達困難な場所に配置することで、「アイテムを取れば残り時間が増加する」「取れなければ大きく時間をロスする」2つの選択肢をプレイヤーに提示できます。
ゲームにトレードオフの要素を入れると、プレイに深みが増します。リスクを取ってリターンを得るか、それとも無視して先に進むかの判断をプレイヤーに委ねることで、遊びに幅が生まれます。
今回はその要素のひとつとして、タイムを回復させるアイテムを追加します。アイテムを到達困難な場所に配置することで、「アイテムを取れば残り時間が増加する」「取れなければ大きく時間をロスする」2つの選択肢をプレイヤーに提示できます。
「コンテンツ」→「GameMaking_Kit」→「Blueprints」に、回復アイテムのブループリント「BP_TimerItem」が用意されています。「BP_TimerItem」に、「触れたら残り時間を増やし、自身(プレイヤーが取得したアイテム)を消滅させる」機能を実装していきます。
コンテンツドロワーから、「BP_TimerItem」をダブルクリックし、編集画面を開きましょう。
「プレイヤーが触れた」ことを検知するには、「当たり判定」という仕組みを使います。
当たり判定を使うことで、プレイヤーや他のアクタが自分に触れたことを判定できます。「当たり判定に触れた時」に実行されるイベントを、イベントグラフに追加しましょう。
ブループリント編集画面の左上にある「コンポーネント」から、当たり判定である「ItemCollision」をクリックして選択します。
選択した状態で、画面右側にある詳細パネルを下にスクロールします。「イベント」にある「On Component Begin Overlap」右隣の「+」ボタンをクリックしましょう。イベントグラフ画面に、「On Component Begin Overlap (ItemCollision)」ノードが配置されます。
このアイテムでは、プレイヤーだけの接触に反応するようにしたいため、まずは「触れたものがプレイヤーかどうかをチェックする」仕組みを実装します。
扉を開く処理でも使用した、条件を満たしているかどうかで処理を分岐できるノード「Branch」を配置します。「On Component Begin Overlap (ItemCollision)」ノードと、実行ピンをつなげましょう。
「当たったアクタがプレイヤーキャラクターかどうか」を、Branchノードで判定させるように設定します。プレイヤーキャラクターにアクセス(取得)する「Get Player Character」ノードを新たに配置しましょう。
「Get Player Character」の「Return Value」ピンをドラッグして「Equal(==)」ノードを追加しましょう。
出力先はBranchノー ドのConditionピンにつなげます。そして、「Equal(==)」ノードにあるもう1つの入力ピンには、当たり判定に触れたオブジェクトが取り出せる「Other Actor」ピンをつなげましょう。これで、「当たり判定に触れたオブジェクト」と「Get Player Characterの出力(= プレイヤーキャラクター)」が一致するときに、「True」 の処理が実行されるようになりました。
このゲームでは、残り時間の仕組みを「PlayerController」が担うようにしています。
的のブループリントから「BP_PlayerController」の「OnTargetBroken」を実行したときと同様に、PlayerControllerを取得する「Get Player Controller」ノードを配置します。
的の実装と同様、「Return Value」ピンをドラッグし「Cast To BP_PlayerController」ノードを追加しましょう。実行ピンは「Branch」の「True」とつなげます。
「As BP Player Controller」ピンをドラッグし、「BP_PlayerController」に実装されている残り時間を加算する処理「Add Remain Time」ノードを配置します。
続いて、加算されたことを示す効果音を再生する処理を追加します。「Play Sound 2D」ノードを配置し、「Add Remain Time」と実行ピンをつなげましょう。
「Sound」ピンで、鳴らすサウンドを指定できます。「アセットを選択」をクリックし、サウンドのリストから「SE_GetItem_Cue」を選択しましょう。
最後に、アイテム自身を消滅させる処理を実装します。「Destroy Actor」ノードを配置し、「Play Sound 2D」と実行ピンをつなげます。「Destroy Actor」がなければアイテムが消えないため、プレイヤーは同じアイテムを何度でも取得できてしまいます。
これで、アイテムの実装は完成です。
マップの画面に戻り、「BP_TimerItem」をスタート地点の近くに配置しましょう。
プレイして、正しく動作するか確かめてみましょう。アイテムに触れると左下のタイマーが10秒加算され、アイテムが消えます。
実装できた「BP_TimerItem」を、マップ内に配置していきます。プレイヤーに「挑戦」を促すか、あるいは難所を超えた「報酬」として提示するかなど、目的を考慮して適切な配置を探りましょう。
アイテムが配置できれば、ついにゲーム完成です!
余力がある方は、発展編としてハンドブックP.24のCHALLENGEに挑戦してみましょう。
ゲームメーカーズ×GALLERIA コラボPC 紹介ページコラボPC 特設ページ西川善司が語る“ゲームの仕組み”の記事をまとめました。
Blenderを初めて使う人に向けたチュートリアル記事。モデル制作からUE5へのインポートまで幅広く解説。
アークライトの野澤 邦仁(のざわ くにひと)氏が、ボードゲームの企画から制作・出展方法まで解説。
ゲーム制作の定番ツールやイベント情報をまとめました。
東京ゲームショウ2024で展示された作品のプレイレポートやインタビューをまとめました。
CEDEC2024で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブル2024で行われた講演のアーカイブ動画・スライドをまとめました。
CEDEC2023で行われた講演レポートをまとめました。
東京ゲームショウ2023で展示された作品のプレイレポートやインタビューをまとめました。
UNREAL FEST 2023で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブルで行われた講演のアーカイブ動画・スライドをまとめました。
UNREAL FEST 2022で行われた講演レポートやインタビューをまとめました。
CEDEC2022で行われた講演レポートをまとめました。