Löve2D: Objects 消失了,但 body 仍然存在
Löve2D: Objects disappear but body still exists
我正在做一个平台游戏,我正在尝试为关卡做一个加载系统,但我有一个问题,我的代码有一部分:
--main.lua
require "level1" ; require "level2"
function love.load()
love.physics.setMeter(64)
world = love.physics.newWorld(0,9.81*64, true)
--[...]
level = 1
end
function love.draw()
if level == 1 then draw_level1()
elseif level == 2 then draw_level2() end
end
function love.update(dt)
world:update(dt)
if gs == "loading2" then unload_level2() ; load_level2() end
--[...]
end
function love.keypressed(key)
if key == "u" then level = 2 gs = "loading2" else gs = "normal" end
end
level1.lua :
--level1.lua
function load_level1(world)
obj1 = {}
obj1.body = love.physics.newBody(world, 111,111, "dynamic")
obj1.shape = love.physics.newRectangleShape(28,28)
obj1.fixture = love.physics.newFixture(obj1.body,obj1.shape)
end
function unload_level1()
obj1 = nil
end
function draw_level1()
love.graphics.polygon("line", obj1.body:getWorldPoints(obj1.shape:getPoints()))
end
和level2.lua一样,只是多了一个矩形,功能类似"draw_level2()"
问题是当我按U键的时候,objects消失了,但是他们的body还在(当玩家触摸他们的时候,会发生碰撞,但是他们是看不见的)怎么办我呢?
首先,obj1 = nil
是行不通的。你也需要摧毁它们。这是通过 obj1:destroy()
, as outlined here.
完成的
其次,在love.update中,每一关都在被摧毁和创造。您可能想修改一个快速变量,该变量会在您加载新关卡后关闭 (loaded = true
)。
当然,一个长期的解决方案是编写适当的关卡加载 "class" - 但假设您是初学者,现在应该没问题。
我正在做一个平台游戏,我正在尝试为关卡做一个加载系统,但我有一个问题,我的代码有一部分:
--main.lua
require "level1" ; require "level2"
function love.load()
love.physics.setMeter(64)
world = love.physics.newWorld(0,9.81*64, true)
--[...]
level = 1
end
function love.draw()
if level == 1 then draw_level1()
elseif level == 2 then draw_level2() end
end
function love.update(dt)
world:update(dt)
if gs == "loading2" then unload_level2() ; load_level2() end
--[...]
end
function love.keypressed(key)
if key == "u" then level = 2 gs = "loading2" else gs = "normal" end
end
level1.lua :
--level1.lua
function load_level1(world)
obj1 = {}
obj1.body = love.physics.newBody(world, 111,111, "dynamic")
obj1.shape = love.physics.newRectangleShape(28,28)
obj1.fixture = love.physics.newFixture(obj1.body,obj1.shape)
end
function unload_level1()
obj1 = nil
end
function draw_level1()
love.graphics.polygon("line", obj1.body:getWorldPoints(obj1.shape:getPoints()))
end
和level2.lua一样,只是多了一个矩形,功能类似"draw_level2()"
问题是当我按U键的时候,objects消失了,但是他们的body还在(当玩家触摸他们的时候,会发生碰撞,但是他们是看不见的)怎么办我呢?
首先,obj1 = nil
是行不通的。你也需要摧毁它们。这是通过 obj1:destroy()
, as outlined here.
其次,在love.update中,每一关都在被摧毁和创造。您可能想修改一个快速变量,该变量会在您加载新关卡后关闭 (loaded = true
)。
当然,一个长期的解决方案是编写适当的关卡加载 "class" - 但假设您是初学者,现在应该没问题。