CorgiEngimeメモ#7
リスポーン処理はどうなっているのか
プレイヤーが死んだら取得したはずのアイテムは全部復活させたいし、ゴールの扉も閉じてやりたい。
しかし、現状だと死んだら取得したアイテムは消えたまま、つまり死ぬ前の状態をそのままキープしてしまっている。これはどげんかせんといかん。
CorgiEngine付属のデモを眺めた感じだと、「RetroForest」デモは、コインだとか武器アイコンだとか取得したあと死ぬと、ちゃんとそいつらが復活しているようだ。これは何をどうやっているのだろうか?
と思ってコインを調べてみると、なんていうかもう、そのまんまじゃんみたいなコンポーネントがくっついてた。この「Auto Respawn」コンポーネントを任意のGameObjectにつけて「Respawn On Player Respawn」にチェックつけると、いい感じにDoしてくれるっぽい。
しかし、現状俺が作ったアイテムはプレイヤーと衝突したらDestroyするようにしちゃってるもんだから、AutoRespawnを呼び出す前に消滅してしまい、結果としてRespawnしない。
・・・もしかして、アイテム取得周りの処理も、CorgiEngineに乗っかれるんですか?(今更感)
アイテム取得処理を見直す
コインのプロパティを眺めてると、「Inventory Pickable Item」とかいうコンポーネントがくっついていた。これのConditionsで「Disable Object When Depleted」にチェックを付けてやると、衝突判定が働いた時にDisableになるようだ。
いや、でも待てよ。俺が作りたいゲーム、インベントリなんて使わないしなぁ。もうちょいミニマムなコンポーネントないっすかね?
と思って調べてみると、それっぽいものがあったのでくっつけてみた。おそらくPickFeedbacksに色々設定すると、アイテム取得時の音とかエフェクトも付けられるのだろう。しかし、今は面倒なので後回し。
結果、Respawnしたらアイテムも元の位置に戻す事ができるように。
ちなみに、前回作ったゴールの状態遷移は、閉鎖状態から開放状態への遷移を追加しといてやった。これで、Respawnしたらしっかり閉まるように。
遷移条件は、LockからUnlockへの遷移でやっていた事の逆。Fruitタグを持つオブジェクトが一個でもあったら閉鎖しとく感じ。(非表示でもカウントされなくなるので)
敵もリスポーンさせたい
しかし、まだ挙動が気になる。プレイヤーが死んだ時、取得したアイテムはRespawnしても、まだ敵がRespawnしていない。
そんな場合は、さっきのアイテムみたいにAuto Respawnコンポーネントを追加してやれば、それだけで良い・・・はずなのだが、試してみるとうまく敵がリスポーンしない。小一時間デモと見比べたのだが、どうやらScene上に置いているCheckpointの位置が関係しているようだ。
早い話が、CheckPointより手前に置いてる敵キャラ「A」はRespawnしないが、後ろに置いている敵キャラ「B」はRespawnする。なんかよくわからんが、そういう決まりごとがあるのだろう。
細かい事はそのうち調べてみるとして、CheckPoint(プレイヤーがりすぽんする場所)よりも後に敵キャラを置いてみる事に。
すると、プレイヤーが死んだ時に敵キャラもりすぽんしてくれた。やったぜ。
この記事が気に入ったらサポートをしてみませんか?