我正在制作一个简单的“突破”游戏,我在重新加载map
时遇到了问题。
例如:如果我从level1开始,打破一些砖并输掉,而不是我再次加载相同的地图。下次球碰到我之前“碰过”的同一块砖时,会给我一个错误Attempt to remove an object that has already been removed
local map = lime.loadMap("maps/" .. currentLevel .. ".tmx")
local layer = map:getTileLayer("bricks_1")
local visual = lime.createVisual(map)
local physical = lime.buildPhysical(map)
function removeBricks(event)
if event.other.isBrick then
local brick = event.other
transition.to(brick, {time = 20, alpha = 0})
score = score + brick.scoreValue
ScoreNum.text = score
-- remove brick
brick:removeSelf()
brick = nil
...
答案 0 :(得分:0)
你试试这个吗?
transition.to(brick, {time = 20, alpha = 0, onComplete = function()
if brick then
brick:removeSelf()
brick = nil
end
end})
答案 1 :(得分:0)
我认为第二次你去游戏时没有创建event.other你是否使用了故事板如果这样你可以尝试在游戏结束后删除场景,所以当你再次进入你的游戏时它将重新创建所有游戏对象
答案 2 :(得分:0)
如果您正在使用物理,则在移除对象本身之前还必须执行physics.removeBody(brick),以便它与物理引擎分离。如果不是物理学认为它仍然存在。