こんにちは。キャラクターが走行中に右を押して壁に触れた場合、待機状態に戻るという条件を再度追加してみましたが、以前と同じ動作を続けています。走行状態から待機状態へ、そしてまた走行状態へと遷移を繰り返し、実際には壁がない場所でも壁を検出し続けています。この条件を再度削除すると、キャラクターは正常に移動します。
ちなみに、もう一つ奇妙な現象に気づきました。壁に張り付いた状態でジャンプボタンを押すと、落下する瞬間に一時的に地面にいると検知され、再びジャンプできるようになります。これを繰り返すことで、壁を登って頂上まで到達できてしまいます。
これは再現が容易なバグで、バージョン17には存在しませんでした。バージョン18にアップグレードするまで気づきませんでした。例えば、オブジェクトの落下速度を100に設定すると、より明確に確認できます。
以前、弾丸設定のバグ、パフォーマンス低下、および発射ボタンのバグ(まだ修正されていません )についてお送りしたテストプロジェクトで確認できます。待機状態のときに「待機中」と表示するコンソールテキストと、走行状態のときに「走行中」と表示するコンソールテキストを追加し、移動してみてください。何が起こるかがわかります。その後、高い壁を作り、それに張り付いてジャンプボタンを押すだけで、問題が明確に確認できます。
なお、このバグは敵キャラクターにも影響します。右側の壁に衝突した場合、左へ歩くアクションに遷移し、その逆も同様という条件を設定すると、ループ状態に入り、右と左を往復し続けてしまいます。
Baz
2025 年 8 月 30 日午後 6:17
2
この投稿で紹介されている解決策を試してみてください。バージョン変更前に存在していたゲームオブジェクトの CollisionShape2D の回転を別の値に変更し、その後 0 に戻すというものです。何らかの理由で、私がその単純な操作を行ったところ、サイド検出が再び正常に機能し始めました。
Ok @Locelaro , Justus is correct, here is a video of the fix (required on all existing objects at time of version change):
Basically it needs to be reset. So by setting the rotation to something…
こんにちは、動画で説明されている手順を実行しましたが、まだ解決していません。床タイルのサイズを確認し、挙動をより視覚的に理解できるようにテストタイルを変更しました。また、キャラクターの状態を確認できるようテキストメッセージを追加しました。出力ウィンドウを見ると、何らかの理由で壁を検出しているため、WAIT から RUN に遷移していることがわかります。前述の通り、WAIT 状態で右キーなどを押しても壁を検出しなければ RUN 状態に遷移する条件を設定しています。しかし、実際には壁がないにもかかわらず、壁を検出して移動しない場合があります。移動中も同様の現象が起き、移動方向に壁を検出すると WAIT 状態になるように設定しているためです。また、ジャンプをより明確に示すためにキャラクターの落下速度も調整しました。壁に張り付いた状態でジャンプボタンを押すと、落下時に実際には地面がないのに地面を検出してしまい、壁を登るまで連続してジャンプできてしまいます。敵の挙動でも同様の現象が確認できます。こちらは以前、弾と火ボタンに関するバグのため提出したプロジェクトのサンプルです。動作を示す動画も添付します。
Grabación 2025-08-31 090429.zip (3.9 MB)
さて、前述のロジックを使用して、衝突判定のみを含みアニメーションを含まない新しい基本オブジェクトを作成しましたが、以前のコメントで説明したような現象は発生していません。すべてのアニメーションに対して衝突判定を削除し、再作成するという手間をかけて、それが問題を解決するかどうかを確認する必要があります……
さらなるテスト:送信した動画から敵の当たり判定を削除し、単純なものであったため再作成しましたが、すべてのフレームで正方形のままだったにもかかわらず、エラーは解消されませんでした。
その後、BAZ が提示した解決策を試みました。当たり判定を回転させてから 0 に戻しましたが、エラーは依然として残っていました。テストとして、当たり判定を 90 に戻してその状態のままにしました。プロジェクトを実行すると、正常に動作しました。
他のプロジェクトも読み込んで同様の操作を行い、当たり判定を 90 度のままにしましたが、これも正常に動作しました。これは私にとって非常に驚きでした。そこで、AGM を使い始めた頃のプロジェクトを読み込み、同じロジックで動作することを確認しました。これにより、これらのプロジェクトに共通する点と、最後のプロジェクトに共通しない点を調査しようと考えました。その結果、古いプロジェクトを除くすべてのプロジェクトで、弾丸の自動回転に「ark_agm_rotate_to_velocity.gd」というスクリプトを使用していることに気づきました。何らかの理由で、このスクリプトがオブジェクトの当たり判定を破損させているのではないかと思われます。いくつかのオブジェクトでこのスクリプトを適用し、その後削除したり、他のオブジェクトに残したりするテストを行いました。
おそらく、すべての当たり判定を 90 度に回転させ、すべてのアニメーションでサイズを調整する必要があるか、あるいはすべてのオブジェクトをゼロから再作成し、そのスクリプトを使用しないようにして、プロジェクトからその痕跡を完全に消去する必要があるでしょう…
さて、私のジレンマは解決したと思います。問題はスケーリングされたオブジェクトにあります。オブジェクトをスケーリングすると、衝突の問題が発生します。通常のスケールに戻すと、正常に動作します。
Justus
2025 年 9 月 1 日午前 1:46
7
さらなるテストをありがとうございます!ark_agm_rotate_to_velocity スクリプトが AGM の衝突ルール動作に干渉するかどうか確認していただけませんか?これは私が以前に作成したスクリプトです。オブジェクト自体が回転すると、それにアタッチされた衝突ボディも実際に一緒に回転します。この状況が問題を引き起こす場合、元のフォーラムのプラグイン投稿にいくつかの注釈を追加する必要があると思います。
Justus
2025 年 9 月 1 日午前 6:10
8
このスケーリングは GameObject を指すのか、それとも CollisionShape を指すのでしょうか?あるいは、X と Y で異なるスケーリング比率を使用した場合にのみこの問題が発生するのでしょうか?
こんにちは、さらにテストを実行しますが、スクリプトとは関係ないと考えています。問題はオブジェクトのスケールを変更したときに発生します。通常、スケールは1/1です。例えば、私が設定したように0.5/0.5に設定すると、壁の検出に問題が発生し始めます。これは、オブジェクトをスケールしてステージ上で移動させたい場合に問題となります。スケールすると、動画で言及したのと同じ問題が発生します。この問題を確認していただきたく、お願いいたします。また、オートローテーションはエンジンに統合されるべきだと考えています。PGMではすでにそのようでした。
Justus
2025 年 9 月 1 日午前 7:49
10
いくつか試してみましたが、最初は問題を再現できませんでした。しかし、左側と右側の衝突検出を混合し、0.5 倍にスケールされた GameObject を使用した条件下で、ついに異常な動作を発見しました。明らかにバグがあります(報告します)、しかし現在、私が遭遇した問題があなたと同じものかどうかは確信が持てません。したがって、最小限の再現プロジェクトを共有していただければより良いですが、不便であればそれでも構いません。
送信しました。これは、弾丸設定のパフォーマンス低下の問題のために送信したのと同じプロジェクトで、彼らはまた、発射ボタンの問題も検出しました。ちなみに、弾丸の問題はまだ修正されていません。
Baz
2025 年 9 月 1 日午後 4:19
12
私が解決できた不具合のある動きについて、いくつかの調整を行いました:
Wait の 0% 速度を削除しました。なぜか 0% 速度に設定すると、入力などを無視するようです。これについてはさらに調査が必要です。
停止時の右/左条件に visible_direction チェックを追加する必要がありました:
ただし、壁の検出はまだ問題があります…引き続き調査します:
こんにちは、速度を0に設定したときに何が起こるかについては、数週間前にこのSteamの投稿で議論しました:
Regarding the "visible_direction" command, it can be added to links that connect actions, but not to the actions themselves because it doesn't appear in the object's variable list. ːsteammockingː Oh, and I've also noticed that the "do not correct...
また、私のプロジェクトにおける「ゴースト」衝突の問題は、キャラクターのスケーリングに関連しています。私が送ったプロジェクトでは、キャラクターは0.5/0.5にスケールされています。これを1/1(実際のスケール)に設定すると、「ゴースト」検出の問題は移動時とジャンプ時の両方で解決され、何の修正もなしに完璧に動作します。プロジェクトを修正なしで読み込み、単にスケールを変更するだけで、問題なく動作することが確認できます。問題はキャラクターをスケールしたときに発生します。その場合、衝突に問題が生じます。
Baz
2025 年 9 月 1 日午後 6:47
14
理解しました、今何を話しているかがわかりました。壁にジャンプすると、スケールが1.0でない場合に何らかの形で底部の壁検知がトリガーされます。
この動画で以前アップロードした際に見られた、移動時やジャンプ時の問題は、ゲームのアクションを変更することなくオブジェクトのスケールを1/1に復元することで解決します。これにより、キャラクターと敵の両方が修正されます。
問題は、オブジェクトのスケール変更時の衝突判定にあります。
言語間のGoogle翻訳が不自然になることがあるため、私の説明が理解しやすくなることを願っています。
Grabación 2025-08-31 090429.zip (3.9 MB)
Baz
2025 年 9 月 2 日午後 1:38
16
はい、混乱を招いて申し訳ありません。ご報告いただいた不具合については、引き続き調査中です。