ノード解説「Sprite2D」

はじめに

ゲームを作るうえで、キャラクターや敵、背景などの画像を画面に表示する必要があります。Sprite2D(スプライト)はそうした2D画像を扱うための、Godotの基本的なノードです。

Sprite2Dとは?

Sprite2Dは、2D画像をシーンに配置して表示するためのノードです。CanvasItem を継承した Node2D 系のノードで、画像ファイル(PNG、JPGなど)を読み込んで画面に描画します。

たとえると、紙にプリントされた絵をゲーム画面という額縁に貼り付けるようなものです。その絵の位置や大きさ、回転などを自由に変えることができます。

Sprite2D は CanvasItem → Node2D を継承しており、2次元空間での位置・回転・スケール操作をすべてサポートしています。

このノードを使うべき場面

  • キャラクターや敵のビジュアルを表示したいとき
  • 背景や環境オブジェクト(木、岩など)を配置するとき
  • アイテムやアイコンを画面に描画するとき
  • 2Dゲームのメインビジュアル表現に
  • UI以外の、ゲーム世界に存在するオブジェクトを表示するとき

使わない・別のノードが適切な場合:

  • ボタンやメニューなどのUI要素 → TextureButton、Control系ノードを使う
  • 複雑なアニメーション制御が必要 → AnimatedSprite2D を使う
  • 複数のスプライトを効率的に描画 → TileMap を使う

主なプロパティと機能

Sprite2Dの代表的なプロパティとメソッドを以下にまとめました。

プロパティ/メソッド 役割
texture 表示する画像ファイルを指定 Texture2D
position 画面上での位置(X, Y座標) Vector2
scale 画像の拡大・縮小率 Vector2
rotation 画像の回転角度(ラジアン) float
modulate 色合い・透明度の調整 Color
centered 画像の中心点を中央に設定するか左上にするか bool
flip_h / flip_v 画像を水平・垂直に反転 bool
get_rect() スプライトの矩形領域を取得 Rect2

以下は、Sprite2Dの基本的な使い方のコード例です。

extends Node2D

func _ready() -> void:
	# スプライトノードを取得
	var sprite = $Sprite2D

	# 画像をリソースから読み込む
	sprite.texture = load("res://assets/player.png")

	# 位置を設定
	sprite.position = Vector2(100, 200)

	# 2倍の大きさに拡大
	sprite.scale = Vector2(2.0, 2.0)

	# 透明度を50%にする
	sprite.modulate = Color(1.0, 1.0, 1.0, 0.5)

もっと使いこなす:カスタマイズできるパラメータ

まずは基本を動かしてみてから、余裕が出たら試してみてください。

1. centered プロパティ — 原点の位置を変える

centeredtrue にすると、スプライトの中心が position の座標になります。false のままだと、左上が原点になり、回転やスケール変更の挙動が変わります。

var sprite = $Sprite2D

# 中心を中央に設定(回転時に便利)
sprite.centered = true

# 回転させるとき、中心を基準に回転する
sprite.rotation = PI / 4  # 45度回転

2. offset プロパティ — 描画位置をずらす

position を変えずに、スプライト内での描画オフセットを調整したいときに使います。キャラクターのアニメーション時に、フレームごとに若干のずれを補正するのに便利です。

sprite.offset = Vector2(10, -5)  # X軸に10、Y軸に-5ずれた位置から描画

3. modulate プロパティ — 色と透明度を操る

RGB値と透明度(Alpha)をまとめて制御します。ダメージ時に赤くする、フェードイン・アウト効果、ゴースト表現など、ビジュアル効果に活躍します。

# 赤くする
sprite.modulate = Color.RED

# 半透明
sprite.modulate = Color(1.0, 1.0, 1.0, 0.5)

# ホワイトアウト(まぶしい効果)
sprite.modulate = Color.WHITE

# カスタムカラー
sprite.modulate = Color(1.0, 0.5, 0.2, 1.0)  # オレンジ色、完全不透明

4. self_modulate — 子ノードの色に影響しない調整

通常の modulate は子ノード全体に影響しますが、self_modulate はこのスプライト自身の色だけを変えます。子ノードを持つ複雑なキャラクター表現で活躍します。

5. flip_h / flip_v — 画像を反転させる

キャラクターが左右を向きなおすときなど、画像全体を反転表示します。新しい画像を用意するより、こちらの方が効率的です。

# 左を向いている
sprite.flip_h = false

# 右を向くとき、画像を左右反転
sprite.flip_h = true

6. region_enabled と region_rect — テクスチャのトリミング

大きな画像から一部だけを切り出して表示します。スプライトシート(複数のキャラが1枚の画像に詰め込まれたもの)を扱うのに最適です。

sprite.region_enabled = true

# 画像の (0, 0) から幅64、高さ64のエリアだけを表示
sprite.region_rect = Rect2(0, 0, 64, 64)

まとめ

Sprite2D は、2Dゲームの画像表示を担う最も基本的なノードです。

  • キャラクター、敵、背景、アイテムなど、ゲーム世界のビジュアルはほぼこれで表現できます
  • position、scale、rotation、modulate など、変更頻度が高いプロパティから優先して学びましょう
  • texture を切り替えたり、色・透明度をアニメーションさせることで、豊かな表現が可能になります

次の記事では、複数フレームの画像を順番に再生して動きを付ける AnimatedSprite2D を解説します。

シリーズ:Godot 4 ノード解説

  • 001 Godot入門:Node
  • 002 Godot入門:Node2D
  • 003 Godot入門:Sprite2D
  • 004 Godot入門:AnimatedSprite2D(準備中)
  • 005 Godot入門:CharacterBody2D(準備中)
  • 006 Godot入門:CollisionShape2D(準備中)
  • 007 Godot入門:Control(準備中)

この記事はGodot 4.xをもとに執筆しています。

コメント