创建Spwan场景

  • 创建一个新场景,只需要一张图片代表Player

    • 添加脚本player_spawn.gd
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      extends Node2D

      func _ready() -> void:
      visible = false
      if not PlayerManager.player_spawned:
      PlayerManager.set_player_position(global_position)
      PlayerManager.player_spawned = true
      print(global_position)
      pass

  • 修改PlayerManager脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    extends Node

    const PLAYER = preload("res://Player/player.tscn")

    var player: Player
    var player_spawned: bool = false

    func _ready() -> void:
    add_player_instance()
    await get_tree().create_timer(0.2).timeout
    player_spawned = true
    pass

    func add_player_instance() -> void:
    player = PLAYER.instantiate()
    add_child(player)


    func set_player_position(_pos: Vector2) -> void:
    player.global_position = _pos

    func set_as_parent(_p: Node2D) -> void:
    if player.get_parent():
    player.get_parent().remove_child(player)
    _p.add_child(player)
    pass

    func unparent(_p: Node2D) -> void:
    _p.remove_child(player)
    pass

  • playground添加脚本level.gd

    1
    2
    3
    4
    5
    6
    7
    class_name Level extends Node2D

    func _ready() -> void:
    self.y_sort_enabled = true
    PlayerManager.set_as_parent(self)
    pass

  • 调整Autoload加载顺序

    • player初始化时依赖PlayerHud,将其提前