假期时光过得就是快啊,不过觉得天天玩容易无聊,放假的第二天就已经觉得百无聊赖了
回归正题,今天临摹的角色图附上
三形态转换
三种形态各自设定一个函数来转换
- 复习点1:setactive这个API的作用是控制一个gameobject的可视化
- 复习点2:利用time类中的delitime即默认时间来进行计时,实现缓慢动态进行操作(操作速度会比直接用++等运算符要慢,可视化效果更好)
利用time来控制那个黑色遮罩的透明度,实现cd的视觉效果。
cd状态
这里的update函数是直接利用了一个新概念枚举,(我在c和c++没学过,就当做新学的东西了)
枚举
以上是我在网上找到比较通俗易懂的解释,可以参考一下
除此之外,我们还需要解决阳光的问题,阳光的设定跟文本有关系,是利用一个textUI来进行显示的,我们需要通过代码链接这个text,让这个阳光的数量可以实时变化
阳光管理器
设定一个sunmanager来管理阳光相关的属性和状态。
- 复习点3:单例,用instance将这个类进行单例化,让其他类可以直接访问此类内的属性和方法
这里又出现了一个新的知识点[SerializeField],这个标识可以直接加到任意属性上,作用就是可以在unity的界面中任意条件他的数值
如上图所示标记部分的sunpoint部分就是可以在unity中自由条件阳光的数量
接下来顺便实现阳光的减法算法
阳光的花费和刷新显示
定义了一个subsun的函数,在执行一次简单的减法后调用updatesunpoint来刷新阳光的数量即可
接下来要讲本期的难点部分:鼠标选择植物并将其种下
鼠标选择效果
部分效果图如上,鼠标选择向日葵后会产生一个向日葵跟随鼠标移动(讲真学之前我真不觉得这是一个难点)
识别鼠标坐标
这个行为分为好几部分(懒得算了),当然没有固定顺序,你可以想先写哪个就写哪个。首先我这里的思路是先把主角鼠标找出来,上述代码是定义了一个followcursor函数来实现讲鼠标的坐标设置到游戏世界的坐标中,让游戏可以实时记录当前的鼠标坐标,当然这个代码没有截图完整,后续是将当前鼠标坐标赋值给选中植物的坐标。
识别植物
如上,定义了一个植物的类,需要分门别类按标签把不同类型的植物都记录进list中,并在unity中对各自植物进行标记选择,目的是为了让系统知道这么多植物中你的标记所带表的植物就是唯一的植物里面的东西实在太多了现在已经达到上一个初学游戏的脚本量了,导致我自己都弄晕了不小心好几个对象名称用了同一个导致一直报错出bug,调试了好久才搞好
具体思路为:当你的鼠标点击到一个可用的植物时,在你的鼠标坐标上“生成”一个植物,并跟随你的鼠标坐标移动,最后再在规定位置内放下植物即可
当然难点就在于如何让系统判别你点的植物是向日葵而非豌豆射手
在鼠标上添加植物
种植判定
如上图所示,这是一个对于草地上面种植区域的判定,让游戏知道你的植物可以种在哪里。
- 复习点4:判定区域相关 判定区域是由Collider组件来完成的,对于规矩形状的方格,我们用的是boxCollider2d来完成这项任务即碰撞器
将碰撞器和鼠标点击事件绑定在一起,即可实现将植物种下来这个动作
将上述动作全部连起来,就是一个花费阳光购买植物并且种在想要位置上的一连串动作了
最终效果
最终效果如上,(阳光因为是手拉的不准所以数字会变得很奇怪)果然向日葵就应该种在前面
#免责声明#
①本站部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
②若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
③如果本站有侵犯、不妥之处的资源,请联系我们。将会第一时间解决!
④本站部分内容均由互联网收集整理,仅供大家参考、学习,不存在任何商业目的与商业用途。
⑤本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与任何商业和非法行为,请于24小时之内删除!