我有一点问题,我正在寻找一个简单的解决方案,
在我的游戏中,如果子弹触及特定的敌人,则应删除此目标并在其他地方重新生成,
我正在使用自碰撞事件来指示每个敌人的指令,
问题是自碰撞功能只有在他识别目标时才有效,但是当我第一次在碰撞功能中删除它时,我的功能不再存在这个敌人。它只是第一次工作。
我希望我的问题是可以理解的,
这是代码的一个例子:
local ennemy
ennemy = display.newRect(0,0, 20, 50)
transition.to( ennemy, {time = 2000, x = 240, y = 160} )
local function onCollision(self,event)
display.remove( bullet )
display.remove( ennemy )
ennemy = display.newRect(0,0, 20, 50)
transition.to( ennemy, {time = 2000, x = 240, y = 160} )
end
ennemy.collision = onCollision
ennemy:addEventListener( "collision", ennemy )
答案 0 :(得分:1)
你只对第一个敌人对象做addEventListener()
,在碰撞后你有一个全新的敌人对象,它也需要设置碰撞监听器。
local onCollision -- forward declare onCollision() so we can use it from addEnemy()
local enemy
local function addEnemy()
enemy = display.newRect(0,0, 20, 50)
-- new object so need to assign collision listener again
enemy.collision = onCollision
enemy:addEventListener( "collision", enemy )
transition.to( enemy, {time = 2000, x = 240, y = 160} )
end
local function onCollision(self,event)
display.remove( bullet )
display.remove( enemy )
addEnemy()
end
-- Add first enemy…
addEnemy()