フィールドの自動生成(2)


コンストラクションスクリプト
ステキな響き…、憧れるわぁー、BeginPlayを使う前に実行されるところがプロっぽい。

ということでフィールドの自動生成をコンストラクションスクリプトを使って実装してみたのですが…

まず、フィールドの種となるアクター(ここではMainUnitとしました)のコンストラクションスクリプトにブロック生成させて実際のレベルにブロックをスポーン…
スポーンノードが無い!!
コンストラクションスクリプトではアクターをスポーンさせることが出来ないのか!!

では、ブロックをアクターとせず、ブロックのスケルタルメッシュをSetSkeltalMeshで置いていく方法をとってみる。
おぉ!MainUnitを配置しただけでフィールドが生まれた!
MainUnitをちょっと動かすだけで違うフィールドに変わる!
かっこいい…
コンストラクションスクリプトで素のブロックを表示

ブロックを表示させただけではゲームにならないので
敵をスポーン(敵のパトロールポイントが自動でスポーンされる)
柱をスポーン(柱をスポーンさせると自動でカバーポイントがスポーンされる)
スタートとゴールのアクターをスポーン
宝箱をスポーン
イベントトリガーをスポーン
エレベータアクターをスポーン
等々…
これらをMainUnitのBeginPlayでやっつけると最初の内はうまくいっていたのですが、なんか色々実装していくと段々上手くいかなくなってきて…
これはスポーンされてない内に別のアクターがスポーンされ、そのアクターは前にスポーンされてなくてはならないものが含まれてたりして上手くいってないんじゃ??
柱のカバーポイントとか特にあやしい。
プレイヤー達のスポーンをレベルBPにさせてる辺りもタイミングが狂う原因ぽい。

そして素人お得意の、適当な所にDelayノードをぶっ込む。

ミニマップの、踏破で色を変える処理を入れるために今歩いているブロックのミニマップの色を塗るとかやり始めると、もはやブロック踏んだらミニマップを塗るって処理をブロックアクターに任せた方がいいんじゃね?ということになり
コンストラクションスクリプトにブロック(のスケルタルメッシュ)を生成させることはやめました。
そしていつものBeginPlayで処理開始に。

でも間にDelayをぶっ込む素人臭い処理は変わらずでした。

中央のボックストリガーが踏んだらミニマップを塗りつぶす処理に直結
他にも敵シンボルのパトロール範囲のボックスコリジョンや
オブジェクト、ピラーがスポーンされる範囲のボックスコリジョンなども

ブロックアクターに処理を記述したら、各種スポーンもブロックアクターにさせた方が色々小回りが利くんじゃね?
ってことになり、最終的にはMainUnitは仮想ブロックを生成後ブロックアクターをスポーンさせるだけの役割になりました。


コメント

このブログの人気の投稿

フィールド⇔バトルについて

Level Streaming完全に理解した(わかってない)

最低限のサウンド再生について