人机交互小课堂——UNITY学习之简单的生命值系统
今天给大家讲解的是通过简单的计数原理来实现一个简洁的生命值系统的一个功能。
1.首先第一步打开untiy,新建一个3D的空项目,新建一个地形,地形的新建可以观看我们之前的小教程Untiy之碰撞检测和 触发检测中的地形创建来完成。
地形做完之后我们先点击Hierarchy面板中的Create新建一个3D Object之中的Sphere小球作为我们的主物体,副物体就再次新建一个cube来充当。
这样我们的基础准备就完成了,接下来就是本节课的重点了,如何通过计数原理来实现一个简单的生命值系统。
2.首先我们给小球添加一个Riglbdady(刚体组件)这个咋们在前几次的小课堂中也说过,附加刚体组件后我们才可以自由操控小球运动,我们这节课运用一下之前碰撞检测的相关原理,之前碰撞检测是在碰撞一次之后物体就会消失,我们这次给它规定一下碰撞几次之后才会消失,以此来实现简单的生命值系统。
3.我们还是点击Project面板中的Create内的C# Script,新建一个C#代码文件,然后我们给它改个命名为ONE。
4.双击代码打开vs2015界面,我们首先要给它声明一个公有变量的速度这样我们就能够让小球获得一个可以更改的速度,通过获取物体水平方向和垂直方向的轴以及实时更新物体位置,获取物体的Riglbdady(刚体组件)对其速度进行操控。代码如下图所示:
5.返回到Unity界面,选中Hierarchy面板中的Sphere,会发现在原本挂的代码那出现了一个Speed,我们给它编辑一个值,保存之后,点击运行。
6.运行之后可以看到,小球在我们操控下进行一个自由运动。
7.返回编程界面,上次碰撞检测与触发检测给大家讲过一段编程,这次就是在上次的基础上进行新内容的增加。
8.首先我们先定义一个生命值Health,然后我们要运用的是碰撞检测,先判断我们进行碰撞的这个物体是否是我们想要让它改变的物体(通过命名法和标签法进行判断),这次我们用标签法,如果被我们被碰撞的物体,它的标签Tag为pickup,然后给生命值(Health)一个初始值3,当物体被撞到的时候,生命值(Health)减一,如果生命值小于等于0,并且碰撞到的物体是我们想要让它消失的物体,那就执行销毁命令。
9.保存代码,返回到Unity界面中,选中Hierarchy面板中的Sphere,会发现在原本挂的代码那出现了一个Health,值为3
10.选中Cube,在右边的Inspector面板中,点击Tag,会出现一个列表,选中其中的pickup
11.点击运行,操纵小球撞向物体,被碰撞物体的生命值减一,再进行碰撞,生命值为零时,被碰撞物体消失。
12.为了更直观的展现生命系统的变化,在Create面板中右键选择UI中的Image,为了更容易找到Image,我们点击界面上方的2D模式,使用移动工具(快捷键W)将Image移动到一个合适的位置。
13.选择Assets面板中素材的位置,如果是新上传的图片,需要点击该图片,在右边Inspector面板中点击Texture Type,将图片类型选为Sprite(2D and UI),然后点击apply,如果图片已经是这个模式就不用点击apply
14.选中刚才创建的Image,在右边的Inspector面板中Image中有一个Source Image,将我们准备好的图片拖进去(当框变成蓝色时松手),场景中就会出现这个图片。如果图片大小比例不满意可以用缩放工具(快捷键R)进行调节。将血条移动到Cube正上方。将血条命名为Big。
15.同样的方法,将血条中的血那张图片也放到该场景中,将血条经过移动和缩放工具放到图中位置,因为我们的Health是3,所以我们把血条复制另外两份(Ctrl+D),并将其拖到合适的位置,为了更好地识别,我们将这三个Iamge分别命名为one, two ,three。
16.血条做好之后我们需要返回vs2015当中对代码进行修改,使每触碰发生一次就消失一个小血条,使血条的呈现更加真实。这里我们可以通过if函数来实现这个功能,通过判断生命值Health的数值来使三个小血条分别消失。,其代码如下图。
17.我们在修改完代码后回到untiy界面,单击Hierarchy面板中的Sphere,在其Inspector面板中的代码ONE中会发现多出了one,two,there三个空项目,我们就把Hierarchy面板中的one,two,there,分别挂载上去。
18.我们再次运行就可以看到小球Sphere在碰撞过cube之后就会使血条消失一小节。我们之后可以使血条和cube在生命值为零后延迟一段时间后消失。我们再次回到VS2015界面,在代码开始的地方声明一下血条Big,以及cube。然后定义一个消失函数SetDestroy,然后通过Invoke延迟一秒以后调用这个函数使cube和血条Big在生命值归零之后一秒消失。
19.我们回到untiy界面,单击Hierarchy面板中的Sphere,在其Inspector面板中的代码ONE中多出了Cube和Big两项,咋们和以前一样把Cube和Big挂载上去即可。
20.最后点击运行,控制小球碰撞Cube,可以看到血条随着碰撞次数的增加而减少最后消失,血条完全消失后一秒之后Cube和血条一起消失。
好的,咋们今天的小课堂就到这里了,如果在学习过程中遇到问题请私信小编哦,大家下次再见哦!
期待下一期精彩教学的再次见面,bye~。
微信:人机交互HCI https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU0MDMyODk4Mg==&scene=124#wechat_redirect
哔哩哔哩:程序员保护协会会长 UID 269133282