噩梦射⼿(SurvivalShooter)教程(六)
SurvivalShooter 是Unity的官⽅教程案例
怪物动画
1. 像之前主⾓的动画⼀样,给怪物添加Animator Controller
tips:这个游戏⾥⾯的zoomBear和zoomBunny使⽤的是同⼀套动画
可以看到zoomBear没有动画⽂件,因为和zoomBunny共⽤,所以我们需要做两个动画控制器,⼀个是zoomBunny,⼀个是Hellephant。
怪物⼀出⽣就⾃动寻主⾓,当主⾓死亡的时候则进⼊idle状态。
2. 将controller挂到预制体上
3. 其余怪物也同样做法,然后运⾏,可以看到怪物移动的时候会播放动画了。
4. 剩下的状态我们再后期继续做,接下来处理怪物攻击。
怪物攻击
1. 新建两个脚本EnemyAttack处理怪物攻击,PlayerHealth处理⾓⾊的⽣命值。
2. PlayerHealth
TakeDamage是具体的扣⾎逻辑,下⼀节结合UI制作玩家的⾎条,这⾥为调试⽅便,先⽤打印⽇志来
unity 教程替代。
3.
EnemyAttack 每⼀帧的Update都在判断:如果⾓⾊处于攻击范围且时间⾜够攻击,则调⽤攻击函数
GameObject player;//表⽰主⾓
PlayerHealth playerHealth;//需要得到PlayerHealth 脚本
bool  playerInRange = false ;//判断主⾓是否在攻击范围内,这个游戏的设定是怪物触碰到主⾓就开始攻击。
float  timer;//时间变量
public  int  attackDamage = 10; //每次攻击的伤害值
public  float  attackTime = 1f;//每次攻击的间隔时间
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⾯板,可以看到已经正确触发碰撞体了
预告:下⼀节开始设置UI界⾯以及完善怪物的扣⾎逻辑