Godot入門:Camera2Dの使い方と活用法

Node解説

はじめに

Camera2D とは?

Camera2D

映画のカメラマンが被写体を追いながら動くように、ゲームのカメラもプレイヤーキャラクターを追いながら画面を映し出す—それが Camera2D です。

Node2D

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

  • プレイヤーキャラクターを追従する、横スクロールアクションゲーム
  • マップ全体を見守る俯瞰視点のRPG
  • ボス戦闘時に、ボスをズームして見せるカメラワーク
  • パンニング(画面のスクロール)や揺れ(シェイク)の演出が必要なシーン
  • マップの端まで来たときに、カメラが端で止まる処理(バウンダリ設定)

こういうときは他を検討:

主なプロパティと機能

プロパティ名説明デフォルト値
enabledカメラが有効か無効か。false にするとカメラは動かないtrue
global_positionカメラの位置(ゲーム世界座標系)依存
zoomズームレベル。1.0 が等倍、2.0 で2倍に拡大1.0
limit_left, limit_right, limit_top, limit_bottomカメラが移動できる範囲を制限(マップの端など)-1000000010000000
drag_horizontal_enabledプレイヤーが画面中央から左右にずれたときのカメラの滑らかさtrue
drag_vertical_enabledプレイヤーが画面中央から上下にずれたときのカメラの滑らかさtrue

position


# プレイヤーを追従する基本パターン
extends Node2D

@onready var camera = $Camera2D
@onready var player = $Player

func _process(delta):
	# カメラをプレイヤーの位置に合わせる
	camera.global_position = player.global_position

# プレイヤーが子ノードを持つ場合、カメラは親の動きに自動で付く
# Player スクリプト内で Position2D を更新すれば、
# Camera2D はその変更を受け継ぐ
func _process(delta):
	self.position += velocity * delta

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

ズーム機能で画面サイズを動的に変える


# ボス登場時にズームインする演出
@onready var camera = $Camera2D

func boss_appear():
	var tween = create_tween()
	tween.tween_property(camera, "zoom", Vector2(1.5, 1.5), 1.0)
	# 1秒かけて 1.5 倍にズーム

カメラシェイク(揺れ)で緊迫感を演出


# カメラを揺らす
func shake_camera(duration: float, strength: float):
	var original_offset = camera.offset
	var elapsed = 0.0

	while elapsed < duration:
		camera.offset = original_offset + Vector2(
			randf_range(-strength, strength),
			randf_range(-strength, strength)
		)
		elapsed += get_process_delta_time()
		await get_tree().process_frame

	camera.offset = original_offset

マップの端でカメラを止める(リミット設定)

パラメータ説明活用例
limit_leftカメラが左に移動する最小位置マップの左端を 0 に設定
limit_rightカメラが右に移動する最大位置マップの横幅が 1600 なら 1600 に設定
limit_topカメラが上に移動する最小位置マップの上端を 0 に設定
limit_bottomカメラが下に移動する最大位置マップの縦幅が 900 なら 900 に設定

# マップが 1600x900 の場合
@onready var camera = $Camera2D

func _ready():
	camera.limit_left = 0
	camera.limit_right = 1600
	camera.limit_top = 0
	camera.limit_bottom = 900

ドラッグスムース設定で追従のなめらかさを調整


# スムーズな追従を有効化
@onready var camera = $Camera2D

func _ready():
	camera.drag_horizontal_enabled = true
	camera.drag_vertical_enabled = true
	# さらに細かく調整したい場合、drag_horizontal_speed などもある

複数の Camera2D を切り替える


# ボス戦用カメラに切り替え
@onready var player_camera = $PlayerCamera
@onready var boss_camera = $BossCamera

func enter_boss_battle():
	player_camera.enabled = false
	boss_camera.enabled = true

まとめ

Camera2D は、ゲーム世界を「どう見せるか」を制御する目玉ノード

  • 基本は「position をプレイヤーに合わせる」だけで十分動く
  • zoom、shake、limit などを組み合わせれば、ゲームの雰囲気が大きく変わる
  • 複数のカメラを切り替えることで、シーンごとに視点を変えられる

関連性の高いノード解説記事

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

コメント