加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Cocos2d-lua开发植物大战僵尸09-实现添加植物

发布时间:2020-12-14 16:42:17 所属栏目:百科 来源:网络整理
导读:我们在主场景的触摸事件中,已经判定了玩家选择的植物类型,以及放置的位置,并把它们设置给了战斗层FightLayer,然后调用FightLayer的添加植物方法addPlant添加了植物,植物类的创建我会在后面讲到,现在我们就先当这些类是存在的就好了;我们就来看看这个

我们在主场景的触摸事件中,已经判定了玩家选择的植物类型,以及放置的位置,并把它们设置给了战斗层FightLayer,然后调用FightLayer的添加植物方法addPlant添加了植物,植物类的创建我会在后面讲到,现在我们就先当这些类是存在的就好了;我们就来看看这个函数的实现:

因为要用到植物对象,所以我们先把植物类导进来:

local Nut = require("app.plant.Nut")
local Pease = require("app.plant.Pease")
local SunFlower = require("app.plant.SunFlower")

下面是添加植物方法的实现

function FightLayer:addPlant(event)
-- checkint 检查是否为数字并且转换为整形
-- 根据玩家所点的位置,计算出行数和列数
local col=checkint((event.x+LAWN_WIDTH/2-58)/LAWN_WIDTH)
local row=checkint((event.y+LAWN_HEIGHT/2)/LAWN_HEIGHT)
-- 如果越界,返回
if col<1 or col >9 or row<1 or row>5 then
return
end
-- 如果对应的位置可以放植物并且植物类型不为NOT_PLANT,即说明玩家有选择某一种类型的植物
if self.lawnMatrix[row][col] and self.choosePlantType~=NOT_PLANT then
-- 在该行该列中添加对应类型的植物
self:addPlantObj(row,col)
-- 此时该位置不能放植物了
self.lawnMatrix[row][col]=false
-- 植物添加之后,表示有没有选择植物
self.choosePlantType=NOT_PLANT
-- 被选择的卡片
local plantCard=self:getParent().myPlants[self:getParent().clickCardIndex]
-- 玩家能力值减少
self:getParent().dataLayer:loseEnergy(plantCard.energy)
self:getParent().clickCardIndex=0
-- 卡片冷却
plantCard.isCooling=true
-- 5秒后冷却结束
plantCard.plantCard:runAction(cc.Sequence:create(cc.FadeTo:create(5.0,255),cc.CallFunc:create(function()
plantCard.isCooling=false
end)))


end
end
更具植物类型创建并添加植物
function FightLayer:addPlantObj(row,col)
local plant=nil
-- 如果是坚果类型
if self.choosePlantType==NUT then
-- 创建坚果
plant = Nut.new()
:addTo(self)
-- 添加到非攻击类型植物的数组中
table.insert(self.defensePlants,plant)
elseif self.choosePlantType==SUNFLOWER then
-- print("添加向日葵")
plant = SunFlower.new()
:addTo(self)
table.insert(self.defensePlants,plant)
elseif self.choosePlantType==PEASE then
-- print("添加豌豆射手")
plant = Pease.new()
:addTo(self)
table.insert(self.attackPlants,plant)
end
-- 植物所在列和行
plant.row=row
plant.col=col
-- 将植物添加到植物table中
table.insert(self.allPlants,plant)
-- 更具行列数设置植物的位置
plant:setPosition(cc.p(col*LAWN_WIDTH+40,row*LAWN_HEIGHT-15))
end

运行效果如下:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读