上一篇我们讲了豌豆射手的实现,在这一篇中,我们就来完成坚果和向日葵的是实现,向日葵会生产太阳,所以我们先来完成太阳类Sun。
在src/app下创建一个文件夹product,在文件夹下创建Sun类,
local Sun = class("sun",function() return display.newSprite("product/sun.png") end) function Sun:ctor() self:setScale(0.5) --旋转 self:runAction(cc.RepeatForever:create(cc.RotateBy:create(2.0,360))) -- 默认太阳没被点击 self.isTouch=false -- 贝塞尔曲线 local bezier = { cc.p(self:getPositionX(),self:getPositionY()), cc.p(self:getPositionX()+25,self:getPositionY()+50), cc.p(self:getPositionX()+50,self:getPositionY()-20), } local bezierAction = cc.BezierBy:create(1.0,bezier) -- 太阳出现5秒之后还没被点击 移除 self:runAction(cc.Sequence:create(bezierAction,cc.DelayTime:create(5.0),cc.CallFunc:create(function() if not self.isTouch then self:removeFromParent() end end))) -- 触摸监听 self:setTouchEnabled(true) self:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE) self:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event) -- 如果被点击了 if event.name=="began" then self.isTouch=true -- 一边缩小,一边向左上角移动 local targetPos=cc.p(17,display.height-15) local time=self:getTwoPosDistance(self:getPositionX(),self:getPositionY(),targetPos.x,targetPos.y)/200 local scale=cc.ScaleTo:create(time,0.25) local move=cc.MoveTo:create(time,targetPos) self:runAction(cc.Sequence:create(cc.Spawn:create(scale,move),cc.CallFunc:create(function() -- 玩家能量值增加 self:getParent():getParent().dataLayer:addEnergy(SUN_ENERGY) self:removeFromParent() end))) end return true end) end function Sun:getTwoPosDistance(x1,y1,x2,y2) return math.sqrt(math.pow(math.abs(x1-x2),2)+math.pow(math.abs(y1-y2),2)) end return Sun
向日葵类很简单,继承植物基类,设置动画,之后每隔10秒生产一个太阳,如下:
local Sun = require("app.product.Sun") local PlantBase = require("app.plant.PlantBase") local SunFlower = class("SunFlower",function() return PlantBase.new("plant/sunflower/p_1_%02d.png") end) function SunFlower:ctor() self.currentHP=10 self:palyAnim("sunflowerAnim",8,"plant/sunflower/p_1_%02d.png") -- 每隔10秒,生产一个太阳 local repeatFunction=cc.RepeatForever:create(cc.Sequence:create(cc.DelayTime:create(10.0),cc.CallFunc:create(function() self:productSun() end))) self:runAction(repeatFunction) end function SunFlower:productSun() Sun.new() :pos(self:getPositionX(),self:getPositionY()) :addTo(self:getParent()) end return SunFlower
坚果是防御性植物,相对于其他植物血量就比较高而已:
local PlantBase = require("app.plant.PlantBase") local Nut = class("Nut",function() return PlantBase.new("plant/nut/p_3_%02d.png") end) function Nut:ctor() self.currentHP=20 self:palyAnim("nutAnim",11,"plant/nut/p_3_%02d.png") end return Nut
到这里我们的植物就都创建好了,下一篇我们来讲植物和僵尸之间的战斗逻辑。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|