SurvivalShooter 是Unity的官方教程案例
怪物动画
像之前主角的动画一样,给怪物添加Animator Controller
tips:这个游戏里面的zoomBear和zoomBunny使用的是同一套动画
可以看到zoomBear没有动画文件,因为和zoomBunny共用,所以我们需要做两个动画控制器,一个是zoomBunny,一个是Hellephant。
怪物一出生就自动寻找主角,当主角死亡的时候则进入idle状态。将controller挂到预制体上
- 其余怪物也同样做法,然后运行,可以看到怪物移动的时候会播放动画了。
- 剩下的状态我们再后期继续做,接下来处理怪物攻击。
怪物攻击
- 新建两个脚本EnemyAttack处理怪物攻击,PlayerHealth处理角色的生命值。
- PlayerHealth
TakeDamage是具体的扣血逻辑,下一节结合UI制作玩家的血条,这里为调试方便,先用打印日志来替代。 - EnemyAttack
GameObject player;//表示主角
PlayerHealth playerHealth;//需要得到PlayerHealth 脚本
bool playerInRange = false;//判断主角是否在攻击范围内,这个游戏的设定是怪物触碰到主角就开始攻击。
float timer;//时间变量
public int attackDamage = 10; //每次攻击的伤害值
public float attackTime = 1f;//每次攻击的间隔时间
每一帧的Update都在判断:如果角色处于攻击范围且时间足够攻击,则调用攻击函数
void OnTriggerEnter(Collider other){
if (other.tag == "Player") {
playerInRange = true;
}
}
void OnTriggerExit(Collider other){
if (other.tag == "Player") {
playerInRange = false;
}
}
这两个函数都是Unity自带的判断碰撞体的函数,函数名不可写错
4.给三种怪物的预制体都加入碰撞体,为了编辑方便,可先将预制体拖到地图上,添加SphereCollider(当然也可以用别的Collider,根据怪物体型决定)。
5.确定isTrigger的选项勾上(非常重要),并将脚本挂在怪物身上
调整好后点击右上角的Apply,再删掉地图上的怪物就好,其余的怪物做法相同。
6.点击运行,打开Console面板,可以看到已经正确触发碰撞体了