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

来源:互联网 发布:淘宝达人在哪里找 编辑:程序博客网 时间:2024/06/01 09:35

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


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



加血的道具



模拟玩家的桶



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



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



添加全局变量



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



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



添加3个全局变量

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

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

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



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



添加判断范围的Cube。

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



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



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

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



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



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



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


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



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



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



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


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



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



运行预览,开始状态



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



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



添加Listener、DecreaseHealth状态,

添加decrease_health事件



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



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



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



运行预览



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



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

现在来处理这个问题。

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


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

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

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



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



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



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



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



再吃加血道具,血量不变



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


1 0