塔防游戏 第八集
本集主要完成了新炮塔种类的添加,以及对多个炮台种类的设置。
造型绘制
首先绘制一个新炮台。我们要制作的是双管炮台,功能是在普通炮台的基础上一次瞄准可以攻击两次。我们绘制新的炮台图标,开炮动画和不可放置动画,图标再复制到商店的图标角色中一份。注意我们的开炮动画需要两个,两个炮管分别开火。注意造型的名字要统一改好,之后修改造型的时候要求造型名和列表中的名称一样。
商店图标处理
我们怎么让商店的图标显示两个?新建一个私有变量炮台图标编号,在初始化时给克隆体赋值,表示每个克隆体所代表的炮台图标。一开始的本体设置为0,然后克隆两次,每次克隆自己前值+1。
在克隆后对编号进行判断,换成对应的造型和移动到对应的位置。测试时如果发现本体还在显示,就把本体设置为隐藏。
关于我们的广播,也只想让克隆体对广播消息进行反应,而本体对广播消息不作出反应。但是广播消息是全体对象都能收到的,这里我们就需要创建一个私有变量是否是本体来判断收到广播的对象是克隆体还是本体。在创建对象时初始化为no,创建对象后为本体赋值为yes,就可以在广播消息发出后加一个对是否是本体值的判断,区别本体和克隆体。
为什么不用克隆体编号判断?因为在复制克隆体的时候,本体的编号也是随着克隆而增加的,最后本体的编号并不是想象中的0而是编号的最大值。
新炮台造型切换
现在我们只为新炮台作出了商店的位置,但是购买的炮台还是普通炮台,接下来我们来完成新炮台的攻击方式,购买价格等数据。我们建立一个全局变量当前购买炮台来存放当前选择的炮台类型。为了完成设置,我们新建一个列表炮台类型存放所有的炮台种类名称。列表需要在游戏开始时初始化删除所有项,在克隆炮台图标时添加进列表。
我们需要对于每个炮台存放它们自己的类型。新建一个私有变量炮台类型存放每个炮台被放置时的类型。炮台在被克隆时可以通过读取变量中的名称得知自己的类型,从而更换造型,攻击动画等属性。
炮台攻击逻辑和动画
测试我们发现,炮台放下后变成了我们需要的类型造型,但是在开火后还是变成了基础炮台。我们来做一下对新炮台攻击模式和动画的编写。
把原本射击部分的代码变成自建积木,在积木中区分普通和双管炮台。如果炮台类型时普通,那就和原来一样就可以了。如果炮塔类型是双管,我们让他在正常的第一次开火后再进行一次开火操作。最后修改完后记得在需要射击时调用自建积木。
炮台描述
接下来我们制作和显示新炮台的炮台描述。当我们鼠标移动到相应的炮台图标时,我们通过修改变量来通知描述角色显示对应的描述。
我们新建列表:
- 炮台描述显示存放编号对应的炮台描述是否显示。
- 炮台价格存放每个炮台价格。
- 炮台类型存放每个编号的炮台的类别。
每次开始游戏需要初始化列表为空。在每次图标克隆时,将相应的值添加到列表中。
对于炮台描述显示,在初始化时赋值为隐藏,当鼠标移动到相应的图标上面,将炮台描述显示对应的项修改为显示,否则设定为隐藏。
在描述中的代码,我们让列表中第一个值为显示的编号的炮塔类型显示其对应的描述。
上方遗留了一个问题,就是在双管炮塔布置的时候,在无法布置的区域切换的还是基础炮台的无法部署图片。这里新增双管炮台无法部署的造型,在代码里调整需要显示的造型。这里用了一个字符串链接积木,将造型的名字提前改成“炮台名称+不能放置“,就可以通过拼接找到造型。
炮台价格修改
此时购买的炮台价格依然和普通炮台一样,我们刚才已经创建了炮台价格列表并存放了对应的值,在购买时通过购买的炮塔类型来扣除金币即可。
总结
本集课程我们在之前代码的基础上完成了一个新炮塔的制作,包括攻击,购买,描述显示等。在设计中我们需要考虑到这种同类别不同属性角色的需求,预留出日后升级和修改的空间。