1 解决遗留bug

1 先统一初始混合位置,全部设置成1,0,这样初始位置都是向右的,不会发生初始攻击、跑步的方向不一样的情况

2 制作蝙蝠摧毁动画

1 先将草的effect场景删除,重命名草的脚本为Effect,作为所有动画的播放脚本

2 新建一个AnimatedSprite2D节点,命名为GrassEffect

3 和之前一样的操作,制作草的摧毁动画

3 重构effect脚本

因为不再是子节点,重构effect.gd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#重构,不再是子节点了
#extends Node2D

extends AnimatedSprite2D

#初始化播放动画
func _ready() -> void:

#animated_sprite_2d.
play("Animate")

#播放完消失
func _on_animated_sprite_2d_animation_finished() -> void:
queue_free()

4 信号连接重构

上一节在编辑器里添加的信号连接已经失效了,在脚本里面,使用代码实现回调

effcet.gd

1
2
3
4
5
6
7
8
9
10
11
12
extends AnimatedSprite2D

func _ready():

#动画播放完后,回调播放完的函数
animation_finished.connect(_on_animation_finished)
play("Animate")

#被信号调用的播放完消失
func _on_animation_finished():
queue_free()

5 制作蝙蝠击败动画

新建一个AnimatedSprite2D节点,命名为EnemyDeathEffect,引用动画播放脚本effect.gd,完成敌人死亡的动画效果建造

6 使用蝙蝠击败动画

在Bat脚本中引用,同样要添加为某个节点的子节点,不过改为get_parent().add_child(grassEffect)的方法了

1
2
3
4
5
func _on_stats_no_health() -> void:
queue_free()
+ var enemyDeathEffect = ENEMY_DEATH_EFFECT.instantiate()
+ get_parent().add_child(enemyDeathEffect)
+ enemyDeathEffect.global_position = global_position