好久不见,这几天有点忙,学的零零碎碎,有点少了,所以想今天统一发一期,主要是期间身体也不舒服只能躺着睡觉休息了(其实大部分原因是懒了)

非常懒的绘画,直接摸了一个非人类(确实这个比较简单)
接下来是unity的学习时间:
其实我已经跟着课程学完了pvz的课程内容,但是课程只做了一个关卡,所以接下来的计划是自己深究一下没教学的pvz内容,看看自己能不能实现出来,一个从0到1的过程,我觉得挺重要的

封面部分
游戏的菜单,封面这些东西需要新建立一个场景,跟原本的游戏场景分开来创作,再通过“按钮”的功能来实现场景的转换(类似于PPT的超链接)

场景跳转
如上代码就是实现按钮来“点击跳转到PPT下一页”功能的函数,在实现这个函数之前需要将当前场景加入到这个项目组中,来实现一整个组别的互通。
那么接下来我们开始完善一下这个主菜单的内容,举例完成一个用户名的功能

更改用户名
当点击到“更改用户名”这个牌子的时候会触发这个按钮,然后出现这样一个界面。这个界面是我们用不同UI来组件而成的,在两张图片上叠加一个文字的UI框,让玩家可以在上面输入自己的名字,然后保存在牌子上。

名字输入
输入用户名后,需要通过代码的数组(List)来储存这个string的变量(string可以支持中文),再通过text组件的代码返回到用户界面上。

字体设置与位置关系

用户名
完成效果如上

name 代码
这个功能大体分成三个部分:更改名字,保存名字,更新名字。
在初始阶段可以设置一个默认的用户名,并对玩家写下的用户名加以保存,在更新时,用保存的字体来替换原本的字体即可。

最终效果如上
(别问为什么花袋子上没有选项,退出那几个字,因为图上原本就没有我就懒得加了)
做完上述功能以后,我们就可以通过这个菜单来管理游戏关卡的分布,通过点击不同的按钮来进入不同的关卡(虽然现在我们只有一个关卡就是了)
接下来,在课程结课之后,我选择了自己动手来完善一下这个游戏了,比如说植物,课程只教了两种植物,分别是向日葵和豌豆射手,所以按照之前的知识,我准备动手做一个新的植物

噔噔噔噔我找到了这个,刚好樱桃炸弹属于道具类型的植物,是课程里面没有提出来的,可以挑战一下自己。
按照原本的思路,先找到这张卡的UI,并将亮,暗,cd三个图叠加起来,设置好透明度遮罩,通过代码card类来管理这张卡,实现三种形态的互相转换。

同时记得需要再card类中注册一下樱桃炸弹的标签(忘了这一步我找了好久才发现问题出在哪)
因为这部分代码之前已经是完成的了,不需要写新代码,只需要简单的拖拽绑定好各个部分,把之间的关系理清楚就行。
接下来是种植功能
但是
我找了很久都没找到樱桃炸弹的植物图片素材你们做素材能不能做全啊喂
所以,我看着坚果那张憨厚的笑脸,做了一个违背祖宗的决定

樱桃炸弹
这两个都能爆炸,应该是同一个物种对吧,所以两个都可以一起用的没什么问题
好,来还原一下樱桃炸弹的效果:3*3范围内的爆炸造成能够让大部分僵尸一击必死的伤害
所以我们可以通过碰撞器来对僵尸来进行伤害判定,将伤害设置一个较高的数值,就可以完成这个伤害判定。
同时我们需要通过动画功能将这个“樱桃炸弹”以原点为中心放大至3*3的大小,再让这个樱桃炸弹消失就好了。
同时将代码接上接上plant类,来实现种植功能
理论完毕开始实践:

放大的樱桃炸弹
为什么感觉放大以后这么憨,而且消失的时机好像怎么都不对啊
不过这玩意是真的大杀器,两个这么大的坚果(划掉)不爆的樱桃炸弹,僵尸一碰就死,可以防守全部路线了

加入特效动画
所以为什么特效动画都有为什么没有植物模型啊
这边原计划使用协同的方法来实现先后顺序,先放大1s后再删除樱桃炸弹,再释放这个特效动画。(当然现在也是用这个实现的)

樱桃炸弹
具体代码如上(原谅我的英语水平和取名字的水平)我们设置了这个樱桃炸弹的伤害数值为500
(普通僵尸100血),并设定为当触碰到“zombie”tag的时候才会有实质性伤害,这部分代码与“豌豆”有些相似,基本上可以套用,下面定义了一个协同函数,让樱桃炸弹按照顺序执行消除后再生成一个特效动画的实例。这个协同函数在植物处于激活状态(种植后)才会发生效果。
那么如上,樱桃炸弹已经“开发”完毕复现出来了(忽略那个植物模型)之后我也会继续努力去尝试复现其他植物或者其他功能
