数字を管理してギミックを作る──デスゲームジャム特別賞『ソウルブレイク』を例に

Creators Guideでは、2025年1〜2月にclusterユーザー・みずホコリさんの主催で開催されたワールド制作コンテスト「デスゲームジャム」にまつわる記事を掲載していきます(記事はこちらから)。
特別賞を受賞したあしゃるさんが受賞ワールド「ソウルブレイク」で実装した「二人が揃わないとゲームが始まらないボタン」ギミックについて解説しています。数字を管理してギミックを発火させる仕組みは色々なギミックに応用できるので、ぜひ参考にしてみてください。(編)

こんにちは!
この度、みずホコリさんが主催したワールド制作コンテスト「デスゲームジャム」に応募したワールド『ソウルブレイク』が特別賞を受賞しました。「デスゲームジャム」の詳細は、下記のみずホコリさんの記事をご覧ください。

『ソウルブレイク』では、自分がよく使う「数字を管理して動かすギミック」を実装しています。今回は、そのギミックの紹介をしようと思います。
仕様としてItem LogicGlobal Logicなどオペレーションコンポーネントというものに分類されているものを使っていきます。

 今回の記事では、『ソウルブレイク』でつくった「二人が揃わないとゲームが始まらないボタン」を例に説明していきます。

 組み上げていく前にLogicってどういう流れで動いてるんだ?と、流れを確認しておきましょう。
Cluster Creator Kitドキュメントにも細かく書いてありますが、難しく書かれすぎて自分には頭パーンなので噛み砕いていってみます。

①Logicを動かすための文字列。
②どういう動作が起きるか。
③動作に対しての条件の状態を見る。
④条件結果によって指定されている文字列がどのように動くか。

というのがLogicの主な流れになっています。
表にするとこんな感じ。

 では実際にゲームワールドを作ったときのを実例にやっていってみます。

作りたい動作として

  • 2人用のゲームなので二人が揃ったらゲームがスタートする。

という状態です。

 普通スイッチが一つ押されるとバビューンとKeyが飛んでそのまま動き出しちゃいます。
 解決方法としては”1番目を押せるようにしたら2番目が押せるようにしておく”というのもありますが今回は”どっちから押しても2つ押されたら始まる”という形にしていこうと思います。

準備します。
 作ったものは3つです。キューブのオブジェクトを2つ、それと空のGameObjectを1つ。Hierarchyを右クリックすると出る、CreateEmptyってやつですね。
 空のGameObjectをわかりやすいようにするために「Item_Logic」とリネームしておいてItem Logicのコンポーネントを入れておきます。
 キューブ2つにはスイッチにするためにInteract Item Triggerを入れました。
今回はどちらから押しても動くようにどちらも同じ文字列をTargetに入れます。
2つのキューブからKeyを飛ばすのでTargetの指定をSpecifiedItemにして動かしたいItem Logicを割り当ててあげます。
 Item LogicのTargetにInteract Item Triggerに入れた文字列を入れてあげます。

次にItem Logicに加算の項目を追加していきます。
Item Logicの「+」を押して項目を追加しましょう。

まずは以下のように入力と設定をしてみてください。

①=Addにする
②入力する文字列は両方同じものをいれる
③Thisの文字列をIntegerにする
④上段はRoomStateでInteger
⑤下段はConstantでInteger
⑥数字「1」を入れる

(文字列はcountとしてますが同じ文字列が入ってればなんでもいいです)
Integerっていうのはなんか数値を扱う時に設定するものです。
RoomStateっていうのはなんか文字を入力するときにに設定するものです。
Constantっていうのはなんか数値を入力するときに設定するものです。

ではこれがどう動作するか見ていきます。

①switchというKeyを受け動作する
②Add(加算)するんだなっていう動作が動く
③Addの条件内容を見る
④条件の足し算をしてThisの文字列に加算する

 Addとは「2つの値の和を返します。」(Cluster Creator Kit ドキュメント説明)となっています。
二段あるうちの上段の数値と下段の数値を足したものを設定してある文字列に加算してあげます。

 countの中にある数字は始めはゼロなので。
1回スイッチが押されるとcount(0)+1でcount(1)になります。
2回目のスイッチが押されるとcount(1)+1でcount(2)になります。
という感じで増えた数値に対して更に+1するので押すたびに数字が増えていく仕組みです。

 数字が増える機構はできたので次に”両方のボタンが押されたらなにか起きる”を作っていきます。
 先程のLogicに「+」して項目を一つ足しましょう。

新しい項目を以下のようにしてみましょう。

①次の演出を起こすための文字列を入れておく
②今回はオンオフで動かそうと思うのでBoolに
③=Equalsにする
④数値を2にしておく

2つ目の項目での動作は

①Equalを動かす。(下段の数値が上段のcountの数値と同じの時はオンそれ以外はオフ)
②設定された数値は2なのでスイッチが2度押された状態のcount(2)の状態の時のみ

Boolがオンの値でStep2という文字列が飛びます。
count(1)の状態では2とイコールにならないのでBoolがオフの値でStep2というのが飛ぶため何も起きません。

 最後に設定したStep2というのを使ってボタンが2つ押されたときに音がなるようにしてみます。

空のGameObjectをつくり好きなSEを入れます。
そこにPlay Audio Source Gimmickを足してください。
TargetをItemにしてItem Logicの入っているオブジェクトを入れてあげます
Keyには先程のStep2と入れます。
ParameterTypeをBoolにしておきます。

再生して2つのスイッチを触ると音がなると思います。

ここからさらに

  • 同じスイッチを何度も触れてしまうので、スイッチは一度触ったら消える
  • SEを鳴らした時のようにItem Timerを動かしてカウントダウンする

などしていったりするとよきです。

この加算ギミックを応用すると食べ物を齧っていく表現なんかもできますよ~!

おしまい!

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

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

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

続きを読む