チュートリアル
- 最初の2Dゲーム — Godot Engine (4.x)の日本語のドキュメント
- GDScript 命名規則はpythonと同じ
Player scene
-
Player: Area2D- Scale:
(0.5, 0.5) AnimatedSprite2D:[Animation] > [Sprinte Frames] > 新規- walk: 2画像
- up: 2画像
CollisionShape2DCapsuleShape2D
- Scale:
-
player.gd -
インプットマップの設定
[新しいアクションの追加] > +追加 > 項目右 [イベントを追加] > {割り当てたいボタン}押下
-
シグナル
[ノード] >body_entered(body: Node2D) > 接続 > メソッドにシグナルを接続`
Mob scene
Mob: RigidBody2DAnimatedSprite2D: 3FPSに- fly
- swim
- walk
CollisionShape2D[Collision] > [Mask] > 1を外す: モブ同士が衝突しなくなる
VisibleOnScreenNotifier2D
Main scene
Main: NodePlayer(`チェーンのアイコン [子シーンをインスタンス化])[ノード] > [シグナル] > hit > 接続 > 受信側メソッド: "game_over" > [接続]Playerからhitシグナルが発火したとき,game_over()が呼ばれるようになる
MobTimer: Timerモブが出現する頻度を制御する- Wait Time: 0.5
ScoreTimer: Timer一秒ごとに得点を上げる- Wait Time: 1
StartTimer: Timer開始する前に遅延させる- Wait Time: 2
- One Shot: On
StartPosition: Marker2Dプレイヤーの開始位置- Position: (240, 450)
MobPath: Path2D点を追加(空きスペース) > 時計回りに画面角を4点クリック > 曲線を閉じるMobSpawnLocation: PathFollow2D
main.gd
Hud scene
-
HUD: CanvasLayerScoreLabel: Label- Text: “0”
- Horizontal Alignment: Center
- Vertical Alignment: Center
- Theme Override.Font:
Xolonium-Regular.ttf - Theme Override.Font Sizes: 64
- アンカーのプリセット(ビューの右のスマブラみたいなマーク): 中央上
Message: Label- Text: “Dodge the Creeps!”
StartButton: Button- 同上
MessageTimer: Timer
-
mobシーンで, root の[ノード] > [グループ] > + > mobs > 作成
TileMapLayer

- 目標位置へ移動可能であれば
global_position = global_position.move_toward(target_position, MOVE_SPEED)する
extends CharacterBody2D
@onready var tile_map = $"../TileMap/Layer2"
func _physics_process(_delta):
# (1)
func _process(_delta):
if is_moving:
return
# 入力を受取り, direction: Vector2i に変換する
move(direction)
func move(direction: Vector2i):
var current_tile_position: Vector2i = tile_map.local_to_map(global_position)
var new_position = current_tile_position + direction
target_position = tile_map.map_to_local(new_position)
is_moving = true