チュートリアル

Player scene

  • Player: Area2D

    • Scale: (0.5, 0.5)
    • AnimatedSprite2D: [Animation] > [Sprinte Frames] > 新規
      • walk: 2画像
      • up: 2画像
    • CollisionShape2D
      • CapsuleShape2D
  • player.gd

  • インプットマップの設定

    • [新しいアクションの追加] > +追加 > 項目右 [イベントを追加] > {割り当てたいボタン}押下
  • シグナル

    • [ノード] > body_entered(body: Node2D) > 接続 > メソッドにシグナルを接続`

Mob scene

  • Mob: RigidBody2D
    • AnimatedSprite2D: 3FPSに
      • fly
      • swim
      • walk
    • CollisionShape2D
      • [Collision] > [Mask] > 1を外す: モブ同士が衝突しなくなる
    • VisibleOnScreenNotifier2D

Main scene

  • Main: Node
    • Player (`チェーンのアイコン [子シーンをインスタンス化])
      • [ノード] > [シグナル] > 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: CanvasLayer

    • ScoreLabel: 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

参考文献