模拟破坏一个物体,然后出现拾取道具并将道具拾取的情景。同时演示了如果在不同的状态机下用变量传递信息。
在场景里加入官方的包里面的罐子和破坏掉的罐子底部
下面蓝色的是破罐子底
加入方块,去掉mash render,设置可进入
加入模拟玩家的球,
为方块添加状态机:Setup,Unbroken,Exploading,Broken,添加事件Break,连接状态
在Setup状态机下添加Set Visible动作
把罐子底托进去,设置为不可见
在Unbroken状态添加Trigger Event动作并设置如下
playmak可以复制动作
在Exploading状态机下添加Set Visibility动作,设置罐子消失,现实罐子底
运行预览,开始的状态,罐子底不显示,只显示罐子。
当进入区域,罐子不显示,显示罐子底
为了效果跟好一点,添加个粒子效果。在Exploading状态机下添加Create Object动作
把粒子效果的预制件拖入动作。物体创建的位置靠拖入到罐子底定位。(下图绿线所示)
再预览下,进入区域的时候,多了一个粒子效果,感觉好多了。
把cube改名为bottle,把罐子和罐子底加为bottle的子,然后整个做成预制件。
把官方给定Coin放到场景里,添加Rotate状态机,设置为Y轴每秒旋转360度
添加子的Cube,用来判断拾取范围。去掉cube的mesh render,设置Collider大小
添加Lisenter、Collected状态机,添加Picked_Up事件,并连接。
在Lisenter状态机下添加Trigger Event动作,并设置如下
当发生碰撞的时候,需要把整个Game Object销毁,所以要取得Cube的父。添加Get Parent动作。
其实我觉得,把父做成Cube区域的话就能省点事,不那么麻烦。但是,官方没这么做,为什么,不知道。是为了教学?
在Collected状态机下添加Destory Obejct动作
添加一个变量,ParentToDestory,类型是GameObject,
这样,在Get parent动作的Stroe Result里就能选择新添的变量了。
在Destory Object动作里,
也就可以选出刚才的变量。
这样,动作Get Parent获取了父对象,将父对象赋值给变量ParentToDestory,
通过变量ParentToDestory,将要销毁的对象传给了动作Destory Object。
运行预览下,开始状态
靠近以后,Coin消失
把Coin也做成预制件。
在罐子的Exploading状态机下添加Create Object动作
这个时候,又需要用到变量来传递创建的Coin的位置。
新增一个GameObject变量CoinSpawnPoint。
官方的例子中,没有把判断取得的Cube添加为顶级的Game Object,所以官方这里用到是Get Parent
我做的时候,把判断区域的Cube添加为顶级的Game Object了,所以,这里可以不添加。
官方的做法是在Exploading的时候,通过变量CoinSpawnPoint把创建位置传过来。
我的做法则是直接把Bottle拖进来
运行预览,开始的时候
进入区域,罐子破坏,显示粒子特效和金币
拾取金币