[解決済み]パーティーメンバーのみを初期化したい

返信する
アオサギ
記事: 2
登録日時: 2024年3月31日(日) 22:42

[解決済み]パーティーメンバーのみを初期化したい

投稿記事 by アオサギ »

現在ローグライクゲームを制作中です。
たくさんのキャラクターの中から4人パーティーを組む→ダンジョンに潜る→地上に戻るというサイクルを行いたいのですが、地上に戻る際にパーティーメンバーのみを初期化する方法がわからず悩んでいます。
使えるキャラクターをお金で開放していく形にしたいので、全てのアクターIDを総当たりするような処理は避けたいです。

自分で考えたのは

パーティーメンバーのIDを$gameParty._actorsで変数に取得→$gameParty.removeActor()→gameActors.actor().setup()→$gameParty.addActor()をスクリプトで行う

という流れなのですが、成功しませんでした。

初心者で知識もなく、調べてみましたが手詰まりになってしまったので皆さんの知恵をお借りしたいです。
よろしくお願いいたします。
最後に編集したユーザー アオサギ [ 2024年4月01日(月) 15:56 ], 累計 1 回
アバター
Plasma Dark
記事: 736
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: パーティーメンバーのみを初期化したい

投稿記事 by Plasma Dark »

成功しなかった場合、どううまくいかなかったのかよく観察することで道が拓けることもあります。


さて、アクターの初期化というのがイベントコマンド「メンバーの入れ替え」で表示される初期化チェックボックスのものと同一であると仮定してお話します。

確かに、Game_Actorクラスのsetupメソッドを呼び出すことで初期化が可能ですが、setupメソッドは引数にアクターIDを取ります。
初期化のみが目的であればパーティから外す必要はないので、setupメソッドだけ呼んであげましょう。

また、パーティメンバーのGame_Actorクラスインスタンスはmembersメソッドで配列として取得することができます。
取得したインスタンスそれぞれに対してsetupを実行すれば、パーティメンバーのみ初期化が実現できます。

コード: 全て選択

$gameParty.members().forEach(actor => actor.setup(actor.actorId()))
アオサギ
記事: 2
登録日時: 2024年3月31日(日) 22:42

Re: パーティーメンバーのみを初期化したい

投稿記事 by アオサギ »

頂いたものを参考にさせていただいたところ、理想の挙動になりました!
スクリプトとお友達になれるよう、もっと勉強してみようと思います…!
本当に助かりました、ありがとうございました!
返信する

“MZ:質問”に戻る