グリッドにスナップするコマンド

BAzがPGM用に作成したSnap_to_gridプラグインのような動作をするコマンドの作成を検討しましたか?たとえば、階段のグリッドに中心を合わせて、多くの計算を回避できるようなコマンドがあると非常に便利です。このプラグインでは、必要に応じてXとY方向のピクセルを調整することもできました。プラグインの作者はここにいますので、何を待っているのですか?:smiling_face_with_sunglasses:

「いいね!」 1

はは、調べてみます!

「いいね!」 1

このスクリプトを試して、必要に応じてInvokeScriptを使用して呼び出してください。デバッグシステムも付属しており、必要に応じて視覚的に確認できます。等角タイルもサポートしています!

snap_to_grid.gd (8.3 KB)

使用方法:

  1. .gdファイルをプロジェクトに配置する
  2. スナップさせたいオブジェクトにNode2Dを作成し、スクリプトをアタッチする
  3. インスペクターを設定して、スナップ対象のオブジェクト、スナップタイプ、タイルサイズなどを指定する
  4. InvokeScriptアクションを使用してsnap_to_nearest_gridを呼び出す

「いいね!」 1

どうもありがとうございます。テストしてみたところ、いくつかの結論に達しました。いくつかのプロジェクトを試した結果、このスクリプトはトップビューのゲームでは機能するものの、サイドスクロールゲームではうまく動作しないことがわかりました。キャラクターを地面に「埋め込もう」とするため、画面が揺れてしまい、非常に迷惑です。Yパラメータで修正を試みても、正しく機能しません。問題は、X軸とY軸の両方でキャラクターを同時に中央に合わせようとするため、キャラクターが地面に埋もれてしまい、衝突検知がそれを防ごうとするからだと考えます。解決策として、X軸とY軸の中央合わせを独立して行えるオプションを提供するべきだと思います。X軸、Y軸、または両方のいずれを中央に合わせるかを選択できるようにするべきです。スプライトのサイズも関係しているかもしれません :thinking: …いずれにせよ、このようなコマンドはエンジンに統合され、機能するべきです。再び、あなたの努力に感謝します、BAZ。

(PS: グーグル翻訳で英語に翻訳したため、私の言っていることがだいたい理解できるかと思いますが :P)

まあ、私はスクリプトを自由に修正して、しばらくAIと格闘した結果、x軸またはy軸でのみ移動するオプションを追加することができました。問題は、GodotがAnimatedSprite2Dの物理処理を行う方法にあるようでした。キャラクターの位置を変更する際に発生していたゴースティング(残像)を排除するために、いくつかの試行錯誤と修正を重ねた結果、今はうまく動いているようです。しかし、以前にも言った通り、これはエンジンのコマンドとして実装されるべきです。このままでは、多くの機能がスクリプトで実装され、ネイティブのエンジンコマンドではなくなるでしょう。そして、そうした解決策が存在することすら知らないユーザーもいるでしょう。

snapto_grid2.zip (2.1 KB)

私も、x方向、y方向、または両方のスナップオプションを追加するように修正しました。

あなたが遭遇していたAnimatedSprite2Dの問題は再現できませんでした(このサンプルではそれを使っています)ので、再現方法をもう少し詳しく説明していただければ、その原因を調べることができます。

これは本来、デフォルトで実現可能であると理解していますが、公式の解決策が現在報告されている間、すぐに修正できる簡単な方法があることは良いことです。ユーザーは、昔のRPG Makerのプラグインを見つけたように、これも見つけるでしょう。

snap_to_grid.gd (8.3 KB)

「いいね!」 1

今は正常に動作しています、ありがとうございます!:slightly_smiling_face:

「いいね!」 1