キャラクターをプログラム内で動的に配置する場合は次の様にします。


(1) ゲーム開始時にキャラクターを動的配置する場合

新たに「HANAKO」シーンを作成する

メニューから「シーン → 新しい継承シーン」を選択し、「actor.tscn」を選ぶ

シーンドックの「Actor」を「HANAKO」に変更する

シーンドックの「HANAKO」を右クリックして「スクリプトを拡張」を選び、そのまま作成ボタンを押してHANAKOのスクリプトファイル(hanako.gd)を作成する。

シーンドックの「Sprite2D」をクリックしてSprite2Dのインスペクタを表示する

インスペクタの「Texure <空>」をクリックし、「読み込む」をクリックして「img/HANAKO.png」を選択する

上の方にある「2D」をクリックして2D画面を表示し、画像(50x57)が表示されていることを確認する

シーンドックの「CollisionShape2D」をクリックしてCollisionShape2Dのインスペクタを表示する

インスペクタの「Shape <空>」をクリックし、「CapsuleShape2D」を選択し、2D画面で当たり判定の領域を調整する

Ctrl+S を押してHANAKOシーン(hanako.tscn)を一旦保存する

メイン画面の上にある「my_world」タブをクリックして MyWorld シーンに切り替える

上の方にある「スクリプト」をクリックしてスクリプト画面を開く

「my_world.gd」を選ぶ

以下のソースコードに置き換える

ソース 1: ゲーム開始時にHANAKOを(200,200)の位置に表示
extends World

# HANAKOシーン(hanako.tscn)を読み込む
# @onready は _ready 関数が実行される直前に代入してくださいという指示
# preload関数はゲームの起動時にシーンとか画像とかのリソースを事前ロードする関数
@onready var hanako_scene = preload("res://hanako.tscn")

# 開始時に1度だけ実行される関数
func _ready():
	# HANAKO をインスタンス化
	var hanako = hanako_scene.instantiate()
	# インスタンス化したHANAKOの座標をセット
	hanako.position = Vector2(200,200)
	# MyWorldシーンにHANAKOを追加
	add_child(hanako)


右上の「現在のシーンを実行(F6)」を押すかF6キーでゲームを実行するとHANAKOが表示されるのを確認する


(2) ゲームの途中でキャラクターを動的配置する場合

新たに「APPLE」シーンを作成する

メニューから「シーン → 新しい継承シーン」を選択し、「actor.tscn」を選ぶ

シーンドックの「Actor」を「APPLE」に変更する

シーンドックの「APPLE」を右クリックして「スクリプトを拡張」を選び、そのまま作成ボタンを押してAPPLEのスクリプトファイル(apple.gd)を作成する。

シーンドックの「Sprite2D」をクリックしてSprite2Dのインスペクタを表示する

インスペクタの「Texure <空>」をクリックし、「読み込む」をクリックして「img/APPLE.png」を選択する

上の方にある「2D」をクリックして2D画面を表示し、画像(50x50)が表示されていることを確認する

シーンドックの「CollisionShape2D」をクリックしてCollisionShape2Dのインスペクタを表示する

インスペクタの「Shape <空>」をクリックし、「CircleShape2D」を選択し、2D画面で当たり判定の領域を調整する

Ctrl+S を押してAPPLEシーン(apple.tscn)を一旦保存する

メイン画面の上にある「my_world」タブをクリックして MyWorld シーンに切り替える

上の方にある「スクリプト」をクリックしてスクリプト画面を開く

「hanako.gd」を選ぶ

以下のソースコードに置き換える

ソース 2: ゲーム実行中にHANAKOがAPPLEを表示
extends Actor

# APPLEシーン(apple.tscn)を読み込む
@onready var apple_scene = preload("res://apple.tscn")

# 各フレームごとに繰り返し実行される関数
func _process(delta):
	# d を押したらランダム位置にAPPLEを表示
	if Input.is_action_just_pressed("d"):
		# APPLE をインスタンス化
		var apple = apple_scene.instantiate()
		# インスタンス化したAPPLEの座標をセット
		# HANAKOの近くに表示する
		var x = position.x + randi_range(-50, 50)
		var y = position.y + randi_range(-50, 50)
		apple.position = Vector2(x,y)
		# MyWorldシーンにAPPLEを追加
		$"/root/MyWorld".add_child(apple)


右上の「現在のシーンを実行(F6)」を押すかF6キーでゲームを実行し、dキーを押すたびにHANAKOの近くにAPPLEが表示されるのを確認する