自分向けGodot備忘録 #5
画像のMask処理
マスクしたい範囲を指定したSprite2DなりPolygon2DなりのノードのInspector内でCanvasItem→Visibilityの「Clip Children」を設定して、そのノードの子ノードにマスクされたい画像ノードを作るだけ
Clip Childrenの設定は
Disabled : マスク無し
Clip Only : マスク効果のみで範囲の画像(親ノード画像)は表示しない
Clip + Draw : マスク効果と範囲の画像(親ノード画像)を表示
となっています
同じシェーダーを使った別オブジェクトで、シェーダーが連動してしまう
シェーダーでエフェクトを作りエフェクトを動かすと、別の同じシェーダーを使ってるノードも勝手に動いてしまうことが発生しました
仕様なのかもしれません
シューティングの敵機みたいなダメージエフェクトみたいな「複数を自動生成して被弾でエフェクト発生」みたいな場合だと困るので、私はとりあえずMaskを使って処理をしました
簡単なものなら「エフェクト用のPolygon2Dを元画像と同じサイズで作り、色や透明度を指定しながら動かす」で代用が効きました
Signalのタイミング
クリックのSignalを発生させるノードからSignalを接続したみたいな場合で「クリックして何かを表示してクリックで消す」みたいな処理をしたいとします
そのとき「クリックのsignalを検知→何かしらを表示→再度Signalを待機→クリックのsignalを検知→消す」となりますが、「再度Signalを待機」の時に最初のSignalを拾ってるような状態になる場合があります
「再度Signalを待機」の前に1フレーム程度の時間をawaitしてやると発生しなくなるので、フレームの問題かもしれません