1. このサイトではcookie (クッキー) を使用しています。サイトの利用を継続した場合、cookieの使用に同意したものとみなさせていただきます。 詳しくはこちらをご覧ください。

戦闘メンバーのアクターIDが取得できない

味噌原2019-06-17に開始した「ツクールMV」の中の討論

  1. 味噌原

    味噌原 ユーザー

    RPGツクールMVでプラグインを作成しています。
    特定の条件のときに、戦闘メンバー全員に戦闘アニメーションを再生する処理を書きたかったので、次のように記述しました。
    コード:
    for(var i=1;i<=$gameParty.maxBattleMembers();i++){
                var target=$gameParty.members()[i-1].actorId();
                    $gameActors.actor(target).startAnimation(アニメーションID,false,0);
                }
    ですが、「cannot read property 'actorId' of undefined」というエラーが出てしまいます。

    試しに二行目の$gameParty.members()[i-1]のインデックスを$gameParty.members()[0]などの定数に変更したところ、
    エラーは発生しなくなりました。
    ですが、それでは思ったような動作になりません。

    戦闘メンバー全員のアクターIDを取得するにはどうすればよいでしょうか?
    もしくはほかに、アクター全員にアニメーションを表示するよい方法はないでしょうか?
     
    #1
  2. あるけみ

    あるけみ ユーザー

    こんばんは。
    戦闘メンバーが4人のとき、$gameParty.maxBattleMembers()で返ってくる数字は4です。
    それに対して$gameParty.members()[i-1]は
    一人目を参照するときは[0]、4人目を参照するときは[3]になりますよね?
    つまり、$gameParty.members()[4]とすると存在しない5人目の戦闘メンバーを参照することになります。
    ですので、最初のi<=$gameParty.maxBattleMembers()の条件式を変えると良いと思います
     
    #2
  3. あるけみ

    あるけみ ユーザー

    と、一度書いてみたはいいもののちょっと違う気が...
    ちょっと待っていただけたらコード書きます
     
    #3
  4. エルトン

    エルトン ユーザー

    for(var i=1;i<=$gameParty.members().length;i++){ でいけないかな?
     
    #4
  5. 味噌原

    味噌原 ユーザー

    ありがとうございます。
    下記のように書き換えたら動作するようになりました。
    コード:
    for(var i=1;i<=$gameParty.maxBattleMembers()-1;i++){
                var target=$gameParty.members()[i-1].actorId();
                    $gameActors.actor(target).startAnimation(アニメーションID,false,0);
                }
    
     
    #5

このページを共有