- 17课是 Eagle创建 + Enemy的死亡 + C#继承方面的知识点, 我决定用 图片 + code 的形式表现出来, 达到快速浏览记忆的作用.
- 请跟着图片以及图片上的箭头步骤走.
- 你可能需要提前了解 : 敌人的创建, 动画创建, 动画事件.
-
关于Eagle的创建.
- 值得注意的是, 如果不希望Eagle在x轴有移动, 那么请像图片一样给'Constraints x'打勾.
-
Enemy的死亡.
- 创建好了死亡动画之后, 可能不知道Animtor窗口该如何设置(因为死亡动画可以在任何时候触发).
Enemy死亡原理: 当Player的coll与Enemy触碰的时候(通过tag检测), 如果Player是在Falling阶段, 可以销毁(其实可以写的更加精细), 然后在Enemy生成gameobject实例播放死亡动画, 当死亡动画结束后开启动画事件销毁该角色.
// In PlayerControll.cs..
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Enemy") {
Enemy enemy = collision.gameObject.GetComponent<Enemy>(); //这里已经开始继承获取了...继承内容下面有.
if (anim.GetBool("is_falling"))
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce * Time.deltaTime);
anim.SetBool("is_jumping", true);
SoundManager.Get().EnemDeath(); //这里已经实现了Sound的集成了..
enemy.Death();
}
}
}
因为Frog和Eagle都是同样的死亡机制, 那么我们可以通过继承的方式来让代码更加的整洁.
继承的原理: 就是创建一个Father类, 这个类中的成员Funcation是在子类中通用的, 那么当子类继承Father类的时候就可以调用Father类中的东西实现功能.
那么在这个Frog和Eagle中死亡动画和死亡的处理方式都是一样的, 我们现在来继承Enemy. ps: 想了想就是全部的Enemy代码,那么直接看源码中写注释吧.
// In Enemy_Eagle.cs file..
public class Enemy_Eagle : Enemy
// In Enemy_Frog.cs file..
public class Enemy_Frog : Enemy