見出し画像

CorgiEngimeメモ#7

リスポーン処理はどうなっているのか

画像3

プレイヤーが死んだら取得したはずのアイテムは全部復活させたいし、ゴールの扉も閉じてやりたい。

しかし、現状だと死んだら取得したアイテムは消えたまま、つまり死ぬ前の状態をそのままキープしてしまっている。これはどげんかせんといかん。

画像1

CorgiEngine付属のデモを眺めた感じだと、「RetroForest」デモは、コインだとか武器アイコンだとか取得したあと死ぬと、ちゃんとそいつらが復活しているようだ。これは何をどうやっているのだろうか?

画像2

と思ってコインを調べてみると、なんていうかもう、そのまんまじゃんみたいなコンポーネントがくっついてた。この「Auto Respawn」コンポーネントを任意のGameObjectにつけて「Respawn On Player Respawn」にチェックつけると、いい感じにDoしてくれるっぽい。

しかし、現状俺が作ったアイテムはプレイヤーと衝突したらDestroyするようにしちゃってるもんだから、AutoRespawnを呼び出す前に消滅してしまい、結果としてRespawnしない。

・・・もしかして、アイテム取得周りの処理も、CorgiEngineに乗っかれるんですか?(今更感)

アイテム取得処理を見直す

画像4

コインのプロパティを眺めてると、「Inventory Pickable Item」とかいうコンポーネントがくっついていた。これのConditionsで「Disable Object When Depleted」にチェックを付けてやると、衝突判定が働いた時にDisableになるようだ。

いや、でも待てよ。俺が作りたいゲーム、インベントリなんて使わないしなぁ。もうちょいミニマムなコンポーネントないっすかね?

画像5

と思って調べてみると、それっぽいものがあったのでくっつけてみた。おそらくPickFeedbacksに色々設定すると、アイテム取得時の音とかエフェクトも付けられるのだろう。しかし、今は面倒なので後回し。

画像6

結果、Respawnしたらアイテムも元の位置に戻す事ができるように。

画像7

ちなみに、前回作ったゴールの状態遷移は、閉鎖状態から開放状態への遷移を追加しといてやった。これで、Respawnしたらしっかり閉まるように。

画像8

遷移条件は、LockからUnlockへの遷移でやっていた事の逆。Fruitタグを持つオブジェクトが一個でもあったら閉鎖しとく感じ。(非表示でもカウントされなくなるので)

敵もリスポーンさせたい

しかし、まだ挙動が気になる。プレイヤーが死んだ時、取得したアイテムはRespawnしても、まだ敵がRespawnしていない。

画像9

そんな場合は、さっきのアイテムみたいにAuto Respawnコンポーネントを追加してやれば、それだけで良い・・・はずなのだが、試してみるとうまく敵がリスポーンしない。小一時間デモと見比べたのだが、どうやらScene上に置いているCheckpointの位置が関係しているようだ。

画像10

早い話が、CheckPointより手前に置いてる敵キャラ「A」はRespawnしないが、後ろに置いている敵キャラ「B」はRespawnする。なんかよくわからんが、そういう決まりごとがあるのだろう。

細かい事はそのうち調べてみるとして、CheckPoint(プレイヤーがりすぽんする場所)よりも後に敵キャラを置いてみる事に。

画像11

すると、プレイヤーが死んだ時に敵キャラもりすぽんしてくれた。やったぜ。

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