0

我正在开发一个简单的“突围”游戏,但在重新加载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
        ...
4

3 回答 3

0

我认为您第二次进入游戏时未创建事件。如果您使用情节提要,那么您可以尝试在游戏结束后删除场景,因此当您再次进入游戏时,它将重新创建所有对象

于 2013-06-27T00:36:58.913 回答
0

你试过这个吗?

transition.to(brick, {time = 20, alpha = 0, onComplete = function()
    if brick then
        brick:removeSelf()
        brick = nil
    end
end})
于 2013-06-27T00:30:08.027 回答
0

如果您使用物理,则还必须在移除对象本身之前执行 Physics.removeBody(brick) 以使其与物理引擎分离。如果不是物理学认为它仍然存在。

于 2013-07-01T00:36:14.107 回答