Unity 官方教程 Survival Shooter (三)
现在我们进行怪物对玩家的伤害事件
先制作怪物伤害脚本EnemyAttack.cs如下:
![](https://img.haomeiwen.com/i7791233/831fd7ea36aae78b.png)
通过一个标志位playerInRange来标志是否碰撞了,在碰撞的方法里去改变,在Update()方法里写入伤害的方法。接下来我们要给怪物加上碰撞体。
把3个怪物预制物放在场景中,
添加Sphere Collider作为伤害范围,即进入这个范围就会造成伤害,这个需要触发碰撞事件,所以 Is Trigger 勾上,
添加Capsule Collider作为碰撞体积,比Sphere Collider的范围小一些,怪物和怪物之间就不会叠到一起了,它的Is Trigger 不勾上。以最大的怪物hellephant为例:
![](https://img.haomeiwen.com/i7791233/f40d76e8cd840e17.png)
另两种怪物的大小也调整到合适的,把EnemyAttack.cs脚本都挂上去,再点击Apply应用,最后删去场景中的怪物预制物。
试一下,OK。
![](https://img.haomeiwen.com/i7791233/58479cae67108a56.png)
接下来制作主角的血条,这里我们跟官方的教程不一样,提升一点点难度,我们做一个定在主角头上的血条
![](https://img.haomeiwen.com/i7791233/237a1425ed2ce5cc.png)
我们在生成一个Slider删去不用的部分,设置Canvas 如下:
![](https://img.haomeiwen.com/i7791233/abbb4711ccd810eb.png)
通过改变Scale调整Slider到合适的大小,如下
![](https://img.haomeiwen.com/i7791233/3abe830f37499056.png)
再调整Slider到主角的头上,调整背景颜色为黑,滑动条颜色为红。
![](https://img.haomeiwen.com/i7791233/efc06dd7cc07fd13.png)
新建一个控制角色生命值的脚本PlayerHealth.cs 挂载在Player下,
![](https://img.haomeiwen.com/i7791233/663622857e040798.png)
这个TakeDamage方法就是在EnemyAttack.cs里怪物和玩家碰撞后触发的。我们再回到EnemyAttack.cs里
添加如下内容,获取到PlayerHealth脚本里的TakeDamage方法,在Attack()里触发。
![](https://img.haomeiwen.com/i7791233/d6c82695b2569b8f.png)
运行一下,可以碰到怪物后会减少
![](https://img.haomeiwen.com/i7791233/159a76be7a60113e.png)
我们现要让相机跟随主角。在Camera上挂载一个CameraFollow.cs
![](https://img.haomeiwen.com/i7791233/e4e6a82d64a2e5f3.png)
再将Player拖入脚本中
![](https://img.haomeiwen.com/i7791233/c6ad742a9d1e33a6.png)
这样就可以让相机跟随主角了,但运行试了一下,总是感觉很生硬,官方加入了一个方法Vector3.Lerp,这个方法是让取差值,即让相机的位置取主角位置和相机当前位置的差值,Updae()方法改成这样
![](https://img.haomeiwen.com/i7791233/61ea188b8161d379.png)
我们发现血条没有跟着主角,这里很简单,让在Canvas上挂载一个HealthFollow.cs的脚本,内容如下
![](https://img.haomeiwen.com/i7791233/7cf4474c844e8af9.png)
将Palyer拖入其中,运行一下,不论主角面向哪里,血条一直跟随且面向屏幕,效果不错!