「Sprite2D」は静止画用なのに、セットするまで表示されないのは初心者泣かせかも

2Dノード

前回Node2Dを触ったとき、実は見た目を確認するためにSprite2Dを子ノードとして少しだけ使っていました。ただそのときはNode2D自体の座標の話が中心だったので、今回はSprite2D本体をちゃんと触ってみることにします。

まずはNode2Dの下にSprite2Dを追加しただけの状態で見てみました。

Sprite2Dを置いただけの状態。インスペクターのTextureが空欄になっていて、ビューポートには何も表示されていない
Sprite2Dを置いただけの状態。Textureが空欄で、ビューポートには何も表示されません。

ところがビューポートには何も表示されません。「Sprite」という名前なので見た目があるものだという印象がありますが、インスペクターのTextureに画像を選ぶまでは何も映りません。Sprite2Dは画像を表示するための器であって、画像そのものを持っているわけではないのは理解できますが、「画像を選択してください」くらいあると親切なんだけどなと思いました。こういうのでハマると嫌になってしまいますからね。導線はしっかりしてほしいところ。

愚痴はさておき、インスペクターのTextureにGodotのデフォルトアイコン(icon.svg)を設定してみました。

Textureにicon.svgを設定した直後の状態。原点の十字マーカーに重なるようにロボットのアイコンが表示されている
Textureにicon.svgを設定した直後。原点の十字マーカーに重なるようにアイコンが表示されました。

するとちゃんとロボットのアイコンが表示されました。しかも特に何も設定していないのに、アイコンの中心が原点の十字マーカーにぴったり重なっています。インスペクターを確認すると、Offsetの中にCenteredという項目があり、デフォルトでオンになっていました。これが画像の中心を基準点に合わせる設定のようです。将来的に、別のシーンから呼び出す、というときに座標を変えているとずれているところに呼び出してしまう、という可能性があるので、デフォルトがCenteredなのは親切ですね。

基準点を理解したところで、次は数字やパラメータを実際にいじって基準点がどう動くのか確かめてみました。Centeredをオフにして、OffsetをX50・Y100に設定し、ついでにFlip Vもオンにしてみます。

Centeredをオフにし、OffsetをX50、Y100、Flip Vをオンにした状態。画像が右下方向にずれて上下反転している
Centeredをオフにし、OffsetをX50・Y100、Flip Vをオンにした状態。画像が右下にずれて上下反転しました。

画像が原点から右下方向にずれて、さらに上下にひっくり返って表示されました。Centeredをオフにすると、原点はアイコンの中心ではなく左上の角になるようです。そこからOffsetの数値の分だけさらにずらせるので、CenteredとOffsetを組み合わせると、画像のどこを基準点にするかをかなり細かく調整できることが分かりました。Flip Vは見たままで、単純に上下をひっくり返してくれます。

Node2DのときはPositionやScaleといった「位置」を動かす話がメインでしたが、Sprite2Dにはさらに「その位置のどこを基準にするか」を決めるOffsetとCenteredという層が乗っているイメージです。

他にもAnimationやRegionというパラメータがありますが、使いそうなときにあらためて試してみようと思います。

関連記事

コメント