Unity|Unity 官方教程 Survival Shooter (三)

【Unity|Unity 官方教程 Survival Shooter (三)】现在我们进行怪物对玩家的伤害事件
先制作怪物伤害脚本EnemyAttack.cs如下:


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
通过一个标志位playerInRange来标志是否碰撞了,在碰撞的方法里去改变,在Update()方法里写入伤害的方法。接下来我们要给怪物加上碰撞体。
把3个怪物预制物放在场景中,
添加Sphere Collider作为伤害范围,即进入这个范围就会造成伤害,这个需要触发碰撞事件,所以 Is Trigger 勾上,
添加Capsule Collider作为碰撞体积,比Sphere Collider的范围小一些,怪物和怪物之间就不会叠到一起了,它的Is Trigger 不勾上。以最大的怪物hellephant为例:


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
另两种怪物的大小也调整到合适的,把EnemyAttack.cs脚本都挂上去,再点击Apply应用,最后删去场景中的怪物预制物。
试一下,OK。
Unity|Unity 官方教程 Survival Shooter (三)
文章图片
接下来制作主角的血条,这里我们跟官方的教程不一样,提升一点点难度,我们做一个定在主角头上的血条


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
我们在生成一个Slider删去不用的部分,设置Canvas 如下:


Unity|Unity 官方教程 Survival Shooter (三)
文章图片


通过改变Scale调整Slider到合适的大小,如下


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
再调整Slider到主角的头上,调整背景颜色为黑,滑动条颜色为红。


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
新建一个控制角色生命值的脚本PlayerHealth.cs 挂载在Player下,


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
这个TakeDamage方法就是在EnemyAttack.cs里怪物和玩家碰撞后触发的。我们再回到EnemyAttack.cs里
添加如下内容,获取到PlayerHealth脚本里的TakeDamage方法,在Attack()里触发。


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
运行一下,可以碰到怪物后会减少


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
我们现要让相机跟随主角。在Camera上挂载一个CameraFollow.cs


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
再将Player拖入脚本中


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
这样就可以让相机跟随主角了,但运行试了一下,总是感觉很生硬,官方加入了一个方法Vector3.Lerp,这个方法是让取差值,即让相机的位置取主角位置和相机当前位置的差值,Updae()方法改成这样


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
我们发现血条没有跟着主角,这里很简单,让在Canvas上挂载一个HealthFollow.cs的脚本,内容如下


Unity|Unity 官方教程 Survival Shooter (三)
文章图片
将Palyer拖入其中,运行一下,不论主角面向哪里,血条一直跟随且面向屏幕,效果不错!

    推荐阅读