Wednesday, November 21, 2018

Amazon Lumberyard学習メモ:ゲーム開始時に自動で処理を実行する

キャラクター改良の続きです。
今回は「Script Canvasで変数を初期化する」です。

参考資料:LumberyardユーザーガイドのScript Canvas チュートリアル

キャラクターの移動処理を作成した回の記事で少し触れましたが、現在はScript Canvasで変数に適切な初期値がセットされていない為、最初にキャラクターを回転させないと移動が出来ません。(後から気づいたのですが)初期値自体はScript CanvasのNode Inspectorでセットしておく事が出来ます。しかし今回の場合、キャラクターが最初にどの方向を向いているかによって変数に入るべき値が異なります。
そこで、Play Gameを実行した時点で変数に適切な初期値が入る様に改良します。

ゲーム開始時に処理を実行するにはOn Graph Startというノードを使います。ただし、上記資料によるとこれはエンティティが初期化された直後に実行される様です。現在はキャラクターのエンティティとスクリプトキャンバスが入っているエンティティとが別なので、スクリプトキャンバスのエンティティが初期化された時点でキャラクターのエンティティが初期化されていなければ目的の処理が出来ないと思われます。

それを解決する為にまず、現行のスクリプトをキャラクターのエンティティに移し換える作業を行います。キャラクターのエンティティにスクリプトが入っていれば、必ずキャラクターのエンティティが初期化された後にスクリプトが実行される事になります。

キャラクターのエンティティにScript CanvasコンポーネントとInputコンポーネントを追加し、現在使っているスクリプトとインプットバインディングのファイルをロードします。


スクリプトを開きます。このスクリプトは元々キャラクターのエンティティとは別のエンティティに属していた為、この様にキャラクターのエンティティを参照する様になっています。


現在はキャラクターのエンティティに属しているので、参照をselfに変更します。(参照に使っていたノードを削除すると自動でselfになります。)

これで、現行のスクリプトがキャラクターのエンティティに移し替えられました。

次に、今回のメインである「ゲーム開始時に変数に値をセットする」という処理を作ります。
スクリプトの中で変数をセットする部分を複製し、スタート部分(元々inputが接続されていた部分)をOn Graph Startにします。

これでゲーム開始時に変数に値がセットされる様になりました。

最初にスクリプトが入っていたエンティティはもう必要無いので削除します。

以上で作業終了です。
今回は地味ですが重要な件でした。

No comments: