SubViewportの正しい使い方が知りたい プレイ空間上の座標をマウスの座標から取得するには?、移動がガタガタする現象の対処方法

質問内容

画像ですが、ピクセルアートの2Dプロジェクトで画面解像度の上にCRTシェーダーを使った時に、プレイ空間の座標をマウスの座標から取得する方法が知りたいのですが、調べてもわかりません。おそらくSubViewportの使い方関連だと思うのですが、実装できません。

状況

  • プロジェクト設定

    • プロジェクト → ウインドウ → サイズ → 320x240
    • プロジェクト → ウインドウ → ウインドウのオーバーライド → 2560x1440
    • プロジェクト → ウインドウ → ストレッチモード → canvas_item
  • SubViewport

    • サイズ → 320x240
    • Update Mode → Always
  • ColorRect (*CRTシェーダーを適用)

    • サイズ → 320x240

知りたいこと

  • SubViewportを使用している場合でプレイ空間の座標をマウスの座標から取得する方法
  • スプライトなどが移動するときに、ガタガタ移動してしまうので、滑らかにするにはどうすればいいのか
    (*SubViewportを使用してないときは滑らかに移動できました)

環境

  • Godot Engine 4.6 C#
  • Windows 10

調べたこと

  • ChatGPTでいろいろ質問して変更しましたが、マウスの位置が正常に取得できない
  • SubViewportのサイズをプロジェクト設定のウインドウサイズと同じにしてみましたが、マウスの位置が正常に取得できない

デバッグ出力

GetGlobalMousePosition: (0, -67.900894)
GetViewport().GetMousePosition(): (0, 0)
subViewport.GetMousePosition(): (0, 0)

GetGlobalMousePosition: (0, -67.900894)
GetViewport().GetMousePosition(): (0, 0)
subViewport.GetMousePosition(): (0, 0)

GetGlobalMousePosition: (0, -67.900894)
GetViewport().GetMousePosition(): (0, 0)
subViewport.GetMousePosition(): (0, 0)

GetGlobalMousePosition: (0, -67.900894)
GetViewport().GetMousePosition(): (0, 0)
subViewport.GetMousePosition(): (0, 0)

追加情報


from Discord by amagichan00