Enemy 结点
首先在 enemy.tscn 场景中的 AnimatedSprite2D 中加入一个名为 spawn 的动画:
添加 AnimationPlayer 结点:
在变量申明中添加下面一个变量:
var isSpawning = true
并在 _process() 函数中判断是否处于生成状态,如果处于生成状态直接返回:
func _process(delta):
if (isSpawning):
return
回到 Enemy 中的 AnimationPlayer 添加一个属性轨道,插入一个 AnimatedSprite2D 的 Animation 值,开始时设置为 spawn,如下所示:
为 Enemy 也添加一个 Visuals 结点用来管理视觉翻转:
为了让敌人生成出来的时候有一种生出来的感觉,而不是突然出现在空中,我们需要为缩放增加两个关键帧,具体在 AnimationPlayer 中实施,在 AnimationPlayer 中添加 Visuals 结点的 Scale 属性轨道:
在动画中添加属性值:
或许可以让大小先变到 1.1(等比例) 再变到 1,让动画看起来有一点弹性,然后改为三次方线性插值使之更加丝滑。
并且需要在动画的开始禁用攻击盒子和受伤盒子。
添加一个 default 动画,类似于 Godot4 中的 reset 动画:
点击 动画 按钮并编辑过渡动画,使 spawn 动画结束后自动进入 default 动画中:
修改上面的代码,将 isSpawning 导出:
如果不进行导出,isSpawning 无法在动画播放器中的属性轨道中找到。
在 default 动画中将 isSpawning 恢复为 true
OK,这样我们的敌人生成动画就完成了。