我目前正在努力研究如何使用Corona SDK拍摄射弹。但是,我不知道这样做的最佳方式。我猜你必须生成同一个对象的实例并对它们施加压力,但我不知道最好的方法或者我应该如何处理每个实例。我还在学习Lua,只需要一些如何做的指导,任何帮助都将受到赞赏。
我希望能够在屏幕顶部检查是否有任何子弹击中传感器对象(我还没有实现这个但我知道如何),然后销毁撞击传感器的子弹但是如何检查每个实例并单独销毁它们?
这是我到目前为止的基本结构。
display.setStatusBar( display.HiddenStatusBar )
local physics = require( 'physics' )
physics.start()
local speed = -500
local contentW, contentH = display.contentWidth, display.contentHeight
-- Background
local bg = display.newRect( 0, 0, contentW, contentH )
bg.anchorX = 0
bg.anchorY = 0
bg:setFillColor( 0, 1, 1 )
-- Ground
local ground = display.newRect( 0, contentH - 50, contentW, 50 )
ground.anchorX = 0
ground.anchorY = 0
ground:setFillColor( 0, 0.8, 0 )
-- Hero
local hero = display.newRect( contentW / 2, contentH / 2, 40, 40 )
hero:setFillColor( 1, 0, 0 )
function shoot( event )
if ( event.phase == 'began' ) then
local projectile = display.newRect( hero.x, hero.y, 10, 30 )
physics.addBody( projectile, 'dynamic' )
projectile.gravityScale = 0
projectile.isBullet = true
projectile:setLinearVelocity( 0, -600 )
end
end
Runtime:addEventListener( 'touch', shoot )
答案 0 :(得分:0)
不确定这是你所追求的,但处理不断变化的多个对象的策略可以在以后因碰撞而删除:
removeSelf
;其他更改可能需要延迟更改,如Modifying Objects中所述。因此,在shoot
之后添加projectile:setLinearVelocity
函数:
projectile.collision = function (event)
...
if remove then
self:removeSelf()
end
...
end
projectile:addEventListener( "collision", projectile)
这会为每个项目符号添加处理程序。您可以为传感器添加一个处理程序,它将是您在创建传感器后立即执行的类似代码,除了您删除event.other
而不是self
:
sensor.collision = function (event)
...
if remove then
event.other:removeSelf()
end
...
end
sensor:addEventListener( "collision", sensor)
答案 1 :(得分:0)
Corona工作人员在Corona论坛上提出了这一点。
要移除撞击传感器的每颗子弹,您需要给射弹一个类型'这些方面的东西。请注意,您可以使用任何单词而不是'键入',但这是我的首选方式。
projectile.type = 'bullet'
然后,您需要向检测到碰撞的传感器对象添加一个事件监听器,在这种情况下,它是一个名为' wall'的对象。在碰撞时,您想要移除碰撞中的另一个物体(子弹)。你可以这样做。
local function wallCollision( event )
if event.phase == 'began' then
if event.other.type == 'bullet' then
display.remove( event.other )
event.other = nil
end
end
end
wall:addEventListener( 'collision', wallCollision )
' event.other'目标是碰撞事件中涉及的另一个对象,在这种情况下,' bullet'。