目的。在 Unity中创建一个敌人爆炸的后续文章**!**
继上一篇文章之后,现在是时候看看触发这个动画播放的脚本方面了。让我们打开我们的 "敌人"脚本,在OnTriggerEnter2D()部分,我们将添加一些代码,将OnEnemyDeath触发器从false设置成true。目前在默认情况下,它被设置为假。
首先,让我们创建一个Animator 组件的句柄,不要忘记GetComponentthe Animator。
接下来,在 OnTriggerEnter2D()方法中, 敌人 与激光和玩家发生碰撞,让我们使用Animator组件的一个内置方法,将SetTrigger改为true。我们只需要在括号内输入字符串格式的触发器的名称。
现在,这产生了一个相当独特的游戏错误,因为在我们调用我们的方法开始播放动画的同时,我们正在摧毁敌人的游戏对象和与之相关的组件,所以动画没有运行。
我们如何解决这个问题呢?我们有几种方法来解决这个问题。
推迟游戏对象被销毁的时间
解决方案。首先,我们可以在Destroy(this.gameobject, 2.633f)中加入一个新的参数来延迟销毁的时间。在这个例子中,我在新参数中加入的时间是精灵动画的长度**。
**
问题: 然而,这在游戏中引入了一个新的错误,那就是我们的游戏对象在这段时间内仍然留在场景中。如果玩家不小心碰到了那个游戏对象,即使他们已经把敌人 炸死了,他们也要被扣掉一条命。
改变敌人的速度
解决方案。当激光器 或 玩家与敌人相撞时,我们可以将敌人 的速度设置为0 或 0.25f,这样就可以阻止敌人或使其移动速度大大降低**。
问题:
然而,这并不能解决游戏对象仍然存在于场景中的问题,在它播放动画的2.633**秒内,能够对我们的玩家造成伤害。
但是,如果敌人在那几秒钟内是静止的,希望我们不会碰到他们
在我找到现阶段更好的解决方案之前,这将不得不是它的功能......
今天的教训是,我们不可能每天都赢,总会有问题需要解决或变得更好 =)
在Unity中创建敌人的爆炸第二部分最初发表在Medium上的Nerd For Tech,人们通过强调和回应这个故事来继续对话。