unity3d的playmaker插件使用教程,六、血量显示及处理

这里展示了如何处理和显示血量,如何使用全局变量在多个状态机下传递信息,如何使用类似if的判断,如何进行数据类型转换。


准备工作,血量显示的文本框

unity3d的playmaker插件使用教程,六、血量显示及处理_第1张图片


加血的道具

unity3d的playmaker插件使用教程,六、血量显示及处理_第2张图片


模拟玩家的桶

unity3d的playmaker插件使用教程,六、血量显示及处理_第3张图片


首先,新建一个空的Game Object,命名为HealthManager,管理整个过程

unity3d的playmaker插件使用教程,六、血量显示及处理_第4张图片


添加Setup、UpdateGUI、AddHealth、Listener状态。
添加Add_Health事件。

unity3d的playmaker插件使用教程,六、血量显示及处理_第5张图片


添加全局变量

unity3d的playmaker插件使用教程,六、血量显示及处理_第6张图片


如果在添加全局变量的时候,无法添加并出现以下错误

unity3d的playmaker插件使用教程,六、血量显示及处理_第7张图片


是因为少了一个目录,在Assets\Plugins\PlayMaker目录下添加一个Resources目录即可。

unity3d的playmaker插件使用教程,六、血量显示及处理_第8张图片


添加3个全局变量

添加current_health_i存储血量,类型整型

添加current_health_s用于显示血量,类型字符串

添加health_manager用于传递,类型是GameObject

unity3d的playmaker插件使用教程,六、血量显示及处理_第9张图片


在Health_Cross下添加状态Rotate,添加Rotate动作让十字旋转

unity3d的playmaker插件使用教程,六、血量显示及处理_第10张图片


添加判断范围的Cube。

昨天看了下playmaker的网站,说,有统一的父的话可以方便的获取全部的子。好像是这个意思。先照着做吧。

unity3d的playmaker插件使用教程,六、血量显示及处理_第11张图片


在Cube上添加Setup状态和UpdateHealth状态,添加Health_Pick_Up事件。并在Setup状态下添加Trigger Event动作

unity3d的playmaker插件使用教程,六、血量显示及处理_第12张图片


在UpdateHealth状态下添加Get Parent动作和Destory Object动作,当玩家接触时,销毁自身。

(这里的selfDestory是之前定义的变量,忘记说了。)

unity3d的playmaker插件使用教程,六、血量显示及处理_第13张图片


这是,要把玩家触碰到信息发送给HealthManager,添加Send Event动作

unity3d的playmaker插件使用教程,六、血量显示及处理_第14张图片


这个时候,全局变量health_manager就起作用了,设置如下

unity3d的playmaker插件使用教程,六、血量显示及处理_第15张图片


这个时候,还需要将HealthManager下的Add_Health事件设置为全局事件,

unity3d的playmaker插件使用教程,六、血量显示及处理_第16张图片


然后把状态机名填入,并选中全局事件Add_Health。

unity3d的playmaker插件使用教程,六、血量显示及处理_第17张图片


全局变量health_manager还没赋值,在HealthManager的Setup状态下,添加Get Owner动作,

unity3d的playmaker插件使用教程,六、血量显示及处理_第18张图片


运行预览,当玩家碰触到加血道具的时候,HealthManager的状态正确触发。

unity3d的playmaker插件使用教程,六、血量显示及处理_第19张图片


在HealthManager的Setup状态下,添加动作:Set Int Value,设置血量为50,

unity3d的playmaker插件使用教程,六、血量显示及处理_第20张图片


在UpdateGUI状态下,添加Convert Int To String动作,转换数据类型,并添加Set GUI Text动作显示血量。

unity3d的playmaker插件使用教程,六、血量显示及处理_第21张图片


在AddHealth状态下添加动作Int Add,修改血量。

unity3d的playmaker插件使用教程,六、血量显示及处理_第22张图片


运行预览,开始状态

unity3d的playmaker插件使用教程,六、血量显示及处理_第23张图片


接触到加血道具,状态触发,血量显示正确

unity3d的playmaker插件使用教程,六、血量显示及处理_第24张图片


添加一个减血的平台,就当是火堆啊,怪物放的陷阱啥的就好。

unity3d的playmaker插件使用教程,六、血量显示及处理_第25张图片


添加Listener、DecreaseHealth状态,

添加decrease_health事件

unity3d的playmaker插件使用教程,六、血量显示及处理_第26张图片


在Listener状态下添加Trigger Event动作,处理进入

unity3d的playmaker插件使用教程,六、血量显示及处理_第27张图片


和加血一样,需要在HealthManager下添加Decrease_Health全局事件。

unity3d的playmaker插件使用教程,六、血量显示及处理_第28张图片


在Cube火堆这边添加Send Event动作,

unity3d的playmaker插件使用教程,六、血量显示及处理_第29张图片


运行预览

unity3d的playmaker插件使用教程,六、血量显示及处理_第30张图片


进入Cube时,状态触发正确。

unity3d的playmaker插件使用教程,六、血量显示及处理_第31张图片


这个时候,当玩家不断拾取加血道具的时候,血量会一直增加,血量小于0也可以继续。

现在来处理这个问题。

由于playmaker插件判断功能的限制,思路如下。
当加完血或减血以后,转到CheckHealth100状态
在这个状态下检测血量是否超过100,
如果超过100,在ResetHealth状态下把血量改回100
如果不超过100,转到CheckHealth0状态下,判断血量是否低于或等于100
当血量小于等于0时,游戏结束。

unity3d的playmaker插件使用教程,六、血量显示及处理_第32张图片

在CheckHealth100状态添加Int Compare动作,第一个值是血量,第二个值是100,

相等、小于,大于分别触发不同动作。

感觉这一段,写代码来得简单些呢。

unity3d的playmaker插件使用教程,六、血量显示及处理_第33张图片


血量超过100时,用Set Int Value动作将血量改回100

unity3d的playmaker插件使用教程,六、血量显示及处理_第34张图片


当血量小于等于0的时候,游戏结束

unity3d的playmaker插件使用教程,六、血量显示及处理_第35张图片


游戏结束就简单显示文字好了。

unity3d的playmaker插件使用教程,六、血量显示及处理_第36张图片


运行预览,当玩家血量到100的时候

unity3d的playmaker插件使用教程,六、血量显示及处理_第37张图片


再吃加血道具,血量不变

unity3d的playmaker插件使用教程,六、血量显示及处理_第38张图片


当玩家血量小于0,显示Game Over.

unity3d的playmaker插件使用教程,六、血量显示及处理_第39张图片

你可能感兴趣的:(unity3d,游戏引擎,移动平台开发)