添加新素材

  • 从素材网站上 下载下来新的Player素材

    • AttackSprite01.png

    • 新增attack的三个特效

    • 新增attack的状态机并添加脚本

      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
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      class_name StateAttack extends State

      @export_range(1, 20, 0.5) var decelebrate_speed : float = 5.0
      @export var audio_stream: AudioStream
      var attacking: bool = false
      @onready var walk: StateWalk = $"../Walk"
      @onready var idle: StateIdle = $"../Idle"
      @onready var animation_player: AnimationPlayer = $"../../AnimationPlayer"
      @onready var attack_animation_player: AnimationPlayer = $"../../Sprite2D/AttackSprite2D/AttackAnimationPlayer"
      @onready var audio: AudioStreamPlayer2D = $"../../Audio/AudioStreamPlayer2D"

      func _ready() -> void:
      pass

      func Enter() -> void:
      player.UpdateAnimation("attack")
      attack_animation_player.play("attack_" + player.AnimationDirection())
      animation_player.animation_finished.connect( EndAttack )
      audio.stream = audio_stream
      audio.pitch_scale = randf_range(0.9, 1.1)
      audio.play()
      attacking = true
      pass

      func Exit() -> void:
      animation_player.animation_finished.disconnect( EndAttack )
      pass

      func Process(_delta: float) -> State:
      player.velocity -= player.velocity * decelebrate_speed * _delta
      if attacking == false:
      if player.direction == Vector2.ZERO:
      return idle
      else:
      return walk
      return null

      func PhysicsProcess(_delta: float) -> State:
      return null

      func HandleInput(_event: InputEvent) -> State:
      return null

      func EndAttack(_newAnimName: String) -> void:
      attacking = false
    • 创建一个no_attack的动画,设置为auto,表示为默认 展示的,否则图片上会默认 展示第一帧

  • 修改idle和walk的状态机脚本

    • 添加按键监听,如果按下攻击键则进入attack模式
    • attack动画播放完后,根据用户状态进入walk或idle模式

添加音乐

  • 创建一个节点,下面挂载AudioStreamPlayer2D节点
  • 在attack脚本中添加export的audioStream,上面那个player用于播放

添加阴影

  • 创建一个新的sprite用来放置阴影