Unity|Unity 官方教程 Survival Shooter (三)
【Unity|Unity 官方教程 Survival Shooter (三)】现在我们进行怪物对玩家的伤害事件
先制作怪物伤害脚本EnemyAttack.cs如下:
文章图片
通过一个标志位playerInRange来标志是否碰撞了,在碰撞的方法里去改变,在Update()方法里写入伤害的方法。接下来我们要给怪物加上碰撞体。
把3个怪物预制物放在场景中,
添加Sphere Collider作为伤害范围,即进入这个范围就会造成伤害,这个需要触发碰撞事件,所以 Is Trigger 勾上,
添加Capsule Collider作为碰撞体积,比Sphere Collider的范围小一些,怪物和怪物之间就不会叠到一起了,它的Is Trigger 不勾上。以最大的怪物hellephant为例:
文章图片
另两种怪物的大小也调整到合适的,把EnemyAttack.cs脚本都挂上去,再点击Apply应用,最后删去场景中的怪物预制物。
试一下,OK。
文章图片
接下来制作主角的血条,这里我们跟官方的教程不一样,提升一点点难度,我们做一个定在主角头上的血条
文章图片
我们在生成一个Slider删去不用的部分,设置Canvas 如下:
文章图片
通过改变Scale调整Slider到合适的大小,如下
文章图片
再调整Slider到主角的头上,调整背景颜色为黑,滑动条颜色为红。
文章图片
新建一个控制角色生命值的脚本PlayerHealth.cs 挂载在Player下,
文章图片
这个TakeDamage方法就是在EnemyAttack.cs里怪物和玩家碰撞后触发的。我们再回到EnemyAttack.cs里
添加如下内容,获取到PlayerHealth脚本里的TakeDamage方法,在Attack()里触发。
文章图片
运行一下,可以碰到怪物后会减少
文章图片
我们现要让相机跟随主角。在Camera上挂载一个CameraFollow.cs
文章图片
再将Player拖入脚本中
文章图片
这样就可以让相机跟随主角了,但运行试了一下,总是感觉很生硬,官方加入了一个方法Vector3.Lerp,这个方法是让取差值,即让相机的位置取主角位置和相机当前位置的差值,Updae()方法改成这样
文章图片
我们发现血条没有跟着主角,这里很简单,让在Canvas上挂载一个HealthFollow.cs的脚本,内容如下
文章图片
将Palyer拖入其中,运行一下,不论主角面向哪里,血条一直跟随且面向屏幕,效果不错!
推荐阅读
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- ts泛型使用举例
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 星际无限|星际无限 | 官方推出Filecoin MinerX奖学金计划,吸引中小型Filecoin矿工
- 用npm发布一个包的教程并编写一个vue的插件发布
- 1040表格和W-2表格
- 20180322【w4复盘日志】
- 狗狗定点大小便视频教程下载地址
- SwiftUI|SwiftUI iOS 瀑布流组件之仿CollectionView不规则图文混合(教程含源码)