見出し画像

アイテムの生成、破壊2(個数制限)

以前、アイテムの生成、破壊という記事を書きました。
あのギミックには欠点があって、スイッチを押したら押しただけ無限にアイテムが生成されます。
今回の記事では作りすぎないように個数を制限するロジックを追加しようと思います。
ロジックとはギミックが発動する条件をつけるものです。
今回作る機能はアイテムを生成する数を最大10個にする、というものです。

ロジックの詳しい内容についてはこちら!

こんなところで使ってます!

探偵事務所 隠し部屋

探偵事務所ではこのロジックを採用し、各アイテムの最大生成数が各10個となっています。

生成ロジック

アイテム生成のスイッチに次のコンポーネントを追加します。
スイッチは以前の記事で解説したものを用意してください。
Item Logic メッセージを読み取り、計算した結果をアイテムへメッセージとして通知するオペレーションです。

既存のギミックの設定も少し変わります

Interact Item Trigger

Interact Item Triggerの設定
TargetはThis、Keyはcreate、ValueはSignal

生成スイッチ Item Logic(生成)

TargetはThis、Keyはcreate
その下の+を押して項目を追加
1行目 左からThiscreate1Integer
2行目 =Add
3行目 左からRoomStateIntegerThiscreate1
4行目 左からConstantInteger1
これはcreateという通知を受け取り、create1に1が加算されるという意味です。

さらにその下の+を押して項目を追加
1行目 左からThiscreate2Signal
2行目 =LessThanOrEqual
3行目 左からRoomStateIntegerThiscreate1
4行目 左からConstantInteger10
これはcreate1が10以下だった場合にcreate2の通知をするという意味です。

Create Item Gimmick

Create Item Gimmickの設定
TargetはThis、Keyはcreate2
Item TemplateとSpawn Pointはそのままです。

これでできました!さっそく試してみましょう!
設定したとおり、10個生成したところで止まってくれました!
が、、、、しかし、、、、、
破壊スイッチでアイテムを破壊した後に新しく生成しようとしても出てきてくれません。
どうやら破壊した後もcteate1の数値が10のままなので、それ以上生成されないようです。
これを0に戻さなければなりません。

破壊ロジック

破壊スイッチはそのまま使います

破壊スイッチ

生成スイッチのコンポーネントにItem Logicをもうひとつ追加してください。

生成スイッチ Item Logic(破壊)

TargetはGlobal、Keyはdestroyです。
その下の+を押して項目を追加
1行目 左からThiscreate1Integer
2行目 =Subtract
3行目 左からRoomStateIntegerThiscreate1
4行目 左からConstantInteger100
これは破壊スイッチからのdestroyの通知を受け取り、create1の数値から100を減算するという意味です。

さらにその下の+を押して項目を追加
1行目 左からThiscreate1Integer
2行目 =Max
3行目 左からRoomStateIntegerThiscreate1
4行目 左からConstantInteger0
これは3行目と4行目を比べた場合に大きいほうの数字が結果になるという意味です。create1が-100になった場合に0と比べると0のほうが大きいので結果は0になります。つまり、減算でどんなに引いても0より下にはなりません。

アイテム生成ロジックで最大数が10なので減算も10でいいような感じに思えますが、なぜかうまく動きません。なので減算は大きい数値にしてあります。0より小さくはなりません。
減算はアイテムの最大生成数より大きい数字にするのがよさそうです。

それでは試してみましょう!
破壊スイッチでアイテムを破壊後に再度生成スイッチを押すと、ちゃんと生成してくれました!

ロジックまとめ

今回作ったロジックをざっくり説明
1.生成スイッチを押すとトリガーからcreateという通知が出る。
2.Item Logicが通知を受け取り作動。
  create1に1を加算。
  create1が10以下だったらcreate2を通知。
3.ギミックがcreate2を受け取りアイテムを生成。
4.破壊スイッチを押すとトリガーからdestroyという通知が出る。
5.create1から100が減算される。
6.create1が0未満になった場合は0になる。

こんな感じでcreate1に足し算、引き算してるわけですね!
破壊ギミックはアイテムを手放した場合にもついてるので、そちらにもロジックを入れてもいいと思います。

<<前の記事
文字を貼り付ける

次の記事>>
ライド(自動操縦の乗り物)

実験場解説ページトップへ


この記事が気に入ったらサポートをしてみませんか?