栗片いづも/妄想御殿 2023/10/26 18:44

自分向け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してやると発生しなくなるので、フレームの問題かもしれません

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索