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

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

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

画像が原点から右下方向にずれて、さらに上下にひっくり返って表示されました。Centeredをオフにすると、原点はアイコンの中心ではなく左上の角になるようです。そこからOffsetの数値の分だけさらにずらせるので、CenteredとOffsetを組み合わせると、画像のどこを基準点にするかをかなり細かく調整できることが分かりました。Flip Vは見たままで、単純に上下をひっくり返してくれます。
Node2DのときはPositionやScaleといった「位置」を動かす話がメインでしたが、Sprite2Dにはさらに「その位置のどこを基準にするか」を決めるOffsetとCenteredという層が乗っているイメージです。
他にもAnimationやRegionというパラメータがありますが、使いそうなときにあらためて試してみようと思います。



コメント