現在ローグライクゲームを制作中です。
たくさんのキャラクターの中から4人パーティーを組む→ダンジョンに潜る→地上に戻るというサイクルを行いたいのですが、地上に戻る際にパーティーメンバーのみを初期化する方法がわからず悩んでいます。
使えるキャラクターをお金で開放していく形にしたいので、全てのアクターIDを総当たりするような処理は避けたいです。
自分で考えたのは
パーティーメンバーのIDを$gameParty._actorsで変数に取得→$gameParty.removeActor()→gameActors.actor().setup()→$gameParty.addActor()をスクリプトで行う
という流れなのですが、成功しませんでした。
初心者で知識もなく、調べてみましたが手詰まりになってしまったので皆さんの知恵をお借りしたいです。
よろしくお願いいたします。
[解決済み]パーティーメンバーのみを初期化したい
- Plasma Dark
- 記事: 674
- 登録日時: 2020年2月08日(土) 02:29
- 連絡を取る:
Re: パーティーメンバーのみを初期化したい
成功しなかった場合、どううまくいかなかったのかよく観察することで道が拓けることもあります。
さて、アクターの初期化というのがイベントコマンド「メンバーの入れ替え」で表示される初期化チェックボックスのものと同一であると仮定してお話します。
確かに、Game_Actorクラスのsetupメソッドを呼び出すことで初期化が可能ですが、setupメソッドは引数にアクターIDを取ります。
初期化のみが目的であればパーティから外す必要はないので、setupメソッドだけ呼んであげましょう。
また、パーティメンバーのGame_Actorクラスインスタンスはmembersメソッドで配列として取得することができます。
取得したインスタンスそれぞれに対してsetupを実行すれば、パーティメンバーのみ初期化が実現できます。
さて、アクターの初期化というのがイベントコマンド「メンバーの入れ替え」で表示される初期化チェックボックスのものと同一であると仮定してお話します。
確かに、Game_Actorクラスのsetupメソッドを呼び出すことで初期化が可能ですが、setupメソッドは引数にアクターIDを取ります。
初期化のみが目的であればパーティから外す必要はないので、setupメソッドだけ呼んであげましょう。
また、パーティメンバーのGame_Actorクラスインスタンスはmembersメソッドで配列として取得することができます。
取得したインスタンスそれぞれに対してsetupを実行すれば、パーティメンバーのみ初期化が実現できます。
コード: 全て選択
$gameParty.members().forEach(actor => actor.setup(actor.actorId()))
Re: パーティーメンバーのみを初期化したい
頂いたものを参考にさせていただいたところ、理想の挙動になりました!
スクリプトとお友達になれるよう、もっと勉強してみようと思います…!
本当に助かりました、ありがとうございました!
スクリプトとお友達になれるよう、もっと勉強してみようと思います…!
本当に助かりました、ありがとうございました!