简单植物大战僵尸制作(7)
本帖最后由 KevinHu 于 2021-2-18 19:57 编辑简单植物大战僵尸制作(7)——植物动画效果+植物种植优化
各位鱼油们,我回来啦!!!{:9_217:}
话说回来,好久没有更新这个系列了……{:10_262:}
不过,这个系列理论上来说是不会停更的(但是有时候可能会因为资源紧缺而停更一会),只要植物大战僵尸一直更新,我们以后会不断地完善这个程序。但是在假期会集中更新。毕竟是学生党嘛……{:10_266:}
好了,我们步入正题
素材包:
scratch代码:
植物种植优化
在做教程的时候,我突然发现,种植植物的代码有一点问题{:9_230:} :
那就是,两个植物可以种在相同的位置上
可是,这样就不符合游戏规则了,所以,我们要把它改一改
我们可以建立两个列表,分别存放种下的植物的x和y坐标,在植物种植下去的时候就把自己的x和y坐标填入列表中,种植植物的时候如果检测到这个位置有植物,那么就不种下去
我们先建立两个列表
为了判断这个位置是否有植物,我们需要用循环一个一个寻找列表里的数据,所以我们要再设置一个循环变量
在种植下去的时候,先进行判断,看看这个位置上有没有植物。
然后,把种植的代码改成这样:(拿豌豆射手举例)
别忘了在开始的时候对列表进行初始化
种植后,将植物的坐标添加进列表;当要铲除这个植物时,循环找到植物的位置,将这个位置删除
最后,把代码复制到各个植物中(记得改阳光),就大功告成啦~{:10_298:}
效果图:
植物动画效果
准备工作
我们看着一动不动的植物,是不是感觉太无聊了?现在我们就给植物加上动画效果
我们先把新的植物角色导入进来
然后,把代码复制到新的植物中。
这时候,我们就可以开始制作植物动画效果了。
我们需要“外观”里的这些代码块:
向日葵、豌豆射手
我们先来坐一下向日葵和豌豆射手的动画
先以豌豆射手举例,我们点击“代码”边上的“造型”,可以看到有许多不同的姿态。将这些姿态连续起来,就形成了动画效果。
我们可以在种下的时候,先切换到第一个造型,然后不断切换到下一个造型。
初始代码:
但是,我们发现种下豌豆射手之后豌豆射手开始抽 搐了起来{:5_107:}
suǒ以,我们可以让豌豆射手在切换之前先等一段时间(这里我用的是0.03s),这样就可以减缓豌豆射手动画的速度
现在,豌豆射手的速度就适中了
然后,把豌豆射手的代码稍微改一下,就成了向日葵的代码
土豆地雷
下面,我们来做土豆地雷的代码
土豆地雷刚开始是埋在土地下后会等待15s,然后破土而出。
我们发现刚点击土豆地雷卡片后,会有一个已经出土的土豆地雷跟着鼠标走,然后种下的时候会埋到土里。
所以,我们在种土豆地雷的部分添加一个更改造型的代码
然后,仿照豌豆射手和向日葵的代码写一下土豆地雷的代码
可是,这样,土豆地雷也会切换到爆炸和布置的造型中,所以我们再改一下,当切换到最后一个“等待”的造型后,切换到第一个“等待”的造型
(这里要注意“造型编号”和“造型名称”的区别:“造型编号”是造型小图标左上角的数字编号,而“造型名称”则是你给造型起的名字)
我们发现土豆地雷的切换速度有点快,于是我们把等待的秒数改成0.1s
然后土豆地雷就好啦~{:10_256:}
(当然,还有爆炸的造型,这个我们等到有了僵尸之后再设置)
效果:
樱桃炸弹
樱桃炸弹的特性是:种下之后会立即爆炸,爆炸之后就会消失。
所以我们只要按照樱桃炸弹的造型顺序依次进行,到最后一个造型时将克隆体删除就可以了。
初始代码(这里我们用“重复执行直到……”,效果和在循环内判断是一样的,可以用它偷一下懒{:10_248:} ):
在点击卡片后,我们要把樱桃炸弹的本体设置成第一个造型:
最后,删除樱桃炸弹之前,要把植物x坐标和植物y坐标两个列表里的数据删除:
就好啦~{:10_298:}
总效果:
这期的教程到此就结束了
由于学业有些繁忙,加上编教程的时候遇到了一些《中等的问题》,所以教程出得有点晚,我给大家发一些鱼币补偿一下{:10_256:}
别忘了,如果喜欢,别忘了评分+订阅哦~ 订阅传送门
上一期:传送门
下一期:敬请期待 致歉:
作为简单植物大战僵尸的维护人员,由于最近学业太多,好久没更新帖子{:10_262:}
最近我和@KevinHu 也在讨论下一期的事,大家敬请期待哟!{:10_256:} 感谢分享! {:5_95:} 感谢分享 ? {:10_277:} {:10_247:} {:5_91:} {:10_282:} 6666666666666 顶
{:5_105:} 厉害,学习{:10_256:} 做出来了scratch的飞机大战{:10_256:} {:10_249:}感觉很不错啊! 你可算来啦……{:10_256:} {:10_250:} {:10_245:} weiter 发表于 2021-2-19 17:20
你可算来啦……
跟我一起喊 ::::: {:5_106:}