【cocos2d-x lua】飞机大战小游戏6:碰撞检测
现在有主角飞机、敌机、子弹,但还不能进行游戏,需要进行碰撞检测方可实现玩法。
一、完善血量、得分
为了完善玩法,实现不同敌机的区别,需要修改敌机类,为敌机添加血量、分数等,同时也要为主角飞机添加血量,添加得分。
修改后的敌机类:
local EnemyItem = class("EnemyItem",function (frame,life,score,level)
local enemy = cc.Sprite:createWithSpriteFrameName(frame)
enemy.life = life * level --敌机生命值
enemy.score = score * level --敌机可得分数
enemy.level = level --敌机等级:1、2、3
return enemy
end)
function EnemyItem:getLife()
return self.life
end
function EnemyItem:getScore()
return self.score
end
function EnemyItem:getLevel()
return self.level
end
function EnemyItem:loseLife()
self.life = self.life - 1
end
return EnemyItem
修改敌机层:
local Enemy_A_Life = 1
local Enemy_B_Life = 3
local Enemy_C_Life = 7
local Enemy_A_SCORE = 5
local Enemy_B_SCORE = 10
local Enemy_C_SCORE = 15
local Enemy_A_Level = 1
local Enemy_B_Level = 2
local Enemy_C_Level = 3
function EnemyLayer:addEnemyA()
local enemy = EnemyItem.new("enemy1.png",Enemy_A_Life,Enemy_A_SCORE,Enemy_A_Level)
...
end
为主角飞机添加血量:
planeLayer.hp = 15
二、添加分数、血量标签
分数标签
-- 分数标签
self.sorceLabel = CCLabelBMFont:create(self.score,"font/font.fnt")
:align(display.LEFT_TOP, display.left+20, display.top-20)
:setColor(cc.c3b(143,146,147))
:addTo(self)
血量标签
-- 血量标签
self.hpLabel = CCLabelTTF:create("剩余血量" .. self.plane.hp,"Arial",20,cc.size(120,100))
:align(display.LEFT_TOP, display.left, display.top-50)