我正在尝试创建一个破坏者游戏,其中包含可以在消失之前被击中两次的边缘。
我试过了:
--FOR STRONGER DEFENDERS
for i = 1, len do
for j = 1, level_W do
if(level[i][j] == 2) then
local strong = display.newImage('images/strongdefender.png')
strong.name = 'strong'
strong.x = def_W * j - offset
strong.y = def_H * i
physics.addBody(strong, {density = 1, friction = 0, bounce = 0})
strong.bodyType = 'static'
strongs.insert(strongs, strong)
end
end
end
for i = 1, len do
for j = 1, level_W do
if(level[i][j] == 2) then
local defender = display.newImage('images/defender.png')
defender.name = 'defender'
defender.x = def_W * j - offset
defender.y = def_H * i
physics.addBody(defender, {density = 1, friction = 0, bounce = 0})
defender.bodyType = 'static'
end
end
end
level 是一个用 0 和 2 填充的表格。 2 是防守者图像在游戏中的位置。
我的碰撞事件是这样的:
function onCollision(e)
if(e.other.name == 'defender' or e.other.name == 'strong' and (ball.x + ball.width * 0.5) < (e.other.x + e.other.width * 0.5)) then
xSpeed = -5
elseif(e.other.name == 'defender' or e.other.name == 'strong' and (ball.x + ball.width * 0.5) >= (e.other.x + e.other.width * 0.5)) then
xSpeed = 5
end
if(e.other.name == 'defender') then
audio.play(defencePop)
ySpeed = ySpeed * -1
e.other:removeSelf()
e.other = nil
defenders.numChildren = defenders.numChildren - 1
--SORT SCORE
score = score + 1
scoreNum.text = score * points
scoreNum:setReferencePoint(display.CenterLeftReferencePoint)
scoreNum.x = 54
elseif(e.other.name == 'strong') then
audio.play(defencePop)
ySpeed = ySpeed * -1
e.other:removeSelf()
e.other = nil
defenders.numChildren = defenders.numChildren - 1
--SORT SCORE
score = score + 1
scoreNum.text = score * points
scoreNum:setReferencePoint(display.CenterLeftReferencePoint)
scoreNum.x = 54
end
--defenders.numChildren < 0
if(strongs.numChildren < 0) then
bgAlert('win')
gameStatus = 'win'
end
end -- removeDefender
当球与元素碰撞时,它们都消失了。我怎样才能让一个人一次消失?