gpt4 book ai didi

iphone - 碰撞时生成多个对象 - Corona SDK

转载 作者:行者123 更新时间:2023-11-28 17:43:33 25 4
gpt4 key购买 nike

求助!我正在尝试从天空中一个接一个地生成 5 个球,并让它们在碰到地面或碰到地面上的另一个用户控制对象时立即消失。好消息是我可以按预期成功生成球,但当它们撞击地面(或地面上的其他用户控制对象)时,它们不会消失。自过去 2 天以来,我一直在浏览大量示例代码,但我不知道该怎么做。游戏确实运行了,但调试终端给我一个错误提示:runtime error - attempt to index global 'self' 。这是源代码:

local randomBall = function()
ball = display.newImage( "hardball.png" )
ball.x = math.random (30, 450); ball.y = -20
physics.addBody( ball, { density=2.9, friction=0.5, bounce=0.7, radius=24 } )
local function whenHit (event)
if(event.phase == "began") then
self:removeSelf()
end
end
ball:addEventListener("collision", whenHit)
end

timer.performWithDelay( 500, randomBall, 5 )

最佳答案

告诉我们错误发生在哪一行会很好,但我可以看到你的问题出在函数 whenHit()

它指的是变量“self”,只是您从未定义该变量。大概您希望该函数充当“ball”的方法,因此函数声明应使用冒号语法并且看起来像 ball:collision(event)


请注意,Corona 有两种设置事件监听器的方法。在他们的文档中对此进行了解释:http://developer.anscamobile.com/content/events-and-listeners

然后他们文档中的这个页面解释了如何将其应用于碰撞事件: http://developer.anscamobile.com/content/game-edition-collision-detection

看起来您正在尝试做的是球上的表监听器,在这种情况下,您对 addEventListener 的调用应该是 ball:addEventListener("collision", ball) 然后函数是 ball:collision(event)

他们描述的另一种方法是全局监听器函数,然后在函数内部使用 event.object1 来引用发生碰撞的对象。

关于iphone - 碰撞时生成多个对象 - Corona SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com