以下エラーにてスプライトシートの合計フレーム数より大きいフレーム番号を指定していると指摘されていることは理解できるのですが、アニメーションフレームでは3フレームしか指定していないのに5コマ以上あると言われており困っています。
ゲーム動作上は問題なく動いているのでどこかしらにキャッシュが貯まってしまっているのでしょうか?
E 0:00:07:356 Sprite2D::set_frame: Index p_frame = 5 is out of bounds (vframes * hframes = 5).
<C++ ソース> scene\2d\sprite_2d.cpp:256 @ Sprite2D::set_frame()
Baz
2026 年 8 月 6 日午後 4:30
2
問題はわかりました。アニメーションにおいて、フレームトラックがアニメーショントラックの上に配置されています。トラックは上から下へ適用されるため、前のアニメーションがまだアクティブな状態でフレーム値が先に設定されます。その前のアニメーションのフレーム数が設定されるフレームより少ない場合、アニメーショントラックが切り替わる直前のわずかな瞬間に範囲外エラーが発生します。これがゲームが正常に動作する理由であり、エラーは1フレームだけしか持続しません。
解決策は、トラックの順序を入れ替えてアニメーショントラックをフレームトラックの上に配置することです。トラック名をドラッグして移動できます。こうすることで、フレームインデックスを適用する前に正しいアニメーション(およびそのフレーム数)が設定されます。
一つ気づいたのですが、エラーメッセージにはSprite2Dと記載されていますが、あなたの設定ではAnimatedSprite2Dを使用しています。トラック順序を変更後もエラーが表示される場合、別のオブジェクトから発生している可能性があります。他のアニメーションでも同じトラック順序になっていないか確認してください。
「いいね!」 1
回答ありがとうございます。
トラックの順序を入れ替えてアニメーショントラックをフレームトラックの上に配置しましたがエラーが発生したままでした。
試しにプレイヤーのみを置いたテスト用マップで試しましたがやはり同様のエラーが発生しました。
Baz
2026 年 8 月 6 日午後 6:58
4
ああ、残念ですね。pgmmv-support@gotchagotcha.jp までプロジェクトファイルを送っていただければ、なぜそのようなことが起こっているのか確認できるかもしれません。
「いいね!」 1
Baz
2026 年 8 月 11 日午前 2:01
6
こんにちは。お時間を割いて、こちらでリンクしていたファイルをダウンロードしていただきましたが、エクスポートされたゲームのファイルのようでした。内部で何が起きているのかをさらに調査するには、zip形式の生のプロジェクトファイルを pgmmv-support@gotchagotcha.jp までお送りいただく必要があります。プロジェクトファイルが含まれた新しいリンクをお送りいただければ、喜んで確認させていただきます!
「いいね!」 1
ありがとうございます。プロジェクトファイルをzipしたurlをメールにて送らせていただきました。
Baz
2026 年 8 月 12 日午前 12:23
8
プロジェクトファイルを送っていただきありがとうございます。原因が分かりました!
エラーはプレイヤーの 07_walljump アニメーションからは発生していません。壁ジャンプのエフェクトオブジェクト e_008_walljump_01.tscn から発生しています。その effect ノードは単なる Sprite2D であり、これはエラーメッセージと完全に一致します。プレイヤーは AnimatedSprite2D を使用しているため、プレイヤーが原因である可能性はありませんでした。
何が起きているかを説明します。エフェクトのテクスチャ Eyebeam_002.png のサイズは 120x46 で hframes = 5 であるため、有効なフレーム値は 0 から 4 です。しかし、E_008_walljump_01.tres 内の walljump_01 アニメーションには、0 から 5 までの 6 つのキーを持つフレームトラックがあります。最後のキーでフレーム 5 が設定されると、Godot は範囲外エラーを出力します。ゲームは正常に見えますが、これはそのアニメーションが、不正なキーが発火した瞬間にアルファを 0 にフェードアウトさせているためで、不正なフレームは表示されないからです。壁ジャンプのたびに 1 フレーム分のエラーが発生しているだけで、それ以外に影響はありません。
このアニメーションは元々 6 フレームのシート用に作成されたものと思われます。ダッシュエフェクト e_008_dash_01.tscn は Eyebeam_001.png を使用しており、hframes = 6 で、同じ 0 から 5 のキーでも問題なく動作しています。壁ジャンプ版で 5 フレームのテクスチャに置き換えた際、最後のキーの調整を忘れたようです。
修正方法:
壁ジャンプエフェクトの walljump_01 アニメーションを開き、effect:frame トラックの最後のキーを 5 から 4 に変更するか、単にそのキーを削除してください。その時点でスプライトは完全に透明になっているため、視覚的な変化はありません。また、他のアニメーションでキーフレーム 0 から 5 を使用しているものも確認しましたが、これらは AnimatedSprite2D をターゲットにしているため、このエラーの原因にはなりません。
「いいね!」 1