我有一个物体随着身体“自由”移动:applyForce( x, y )。
我想追踪它之前的位置。
我设置了一个计时器,每一秒我都会得到移动物体的位置,问题是位置不断更新到物体的当前位置。那不是我想要的。我想要它一秒钟前的位置。
关于如何做我想做的事情,我有大约 10 个想法,我只是认为必须有一种更简单、更容易的方法。
我得到的最接近的是一个小的 if 语句,它将位置插入到表中,但问题又是位置不断更新到当前位置而不是前一个位置。
object = {}
object.x = 250
object.y = 200
object.body = love.physics.newBody(world, object.x, object.y, 'dynamic')
object.shape = love.physics.newCircleShape(5)
object.fixture = love.physics.newFixture(object.body, object.shape, 1)
--
object.body:applyForce( 5, 0 )
-- the object is moving to the right, on the x-axis
我想要的是在它旅行时跟踪它的位置。类似的东西
function objectTracking()
timer = timer + dt
--
if timer == 0 then
varPreviousPositionX = object.body:getX()
varPreviousPositionY = object.body:getY()
elseif timer == 1 then
timer = 0
end
end
那是行不通的。只是想快速写一些东西来帮助您解决问题。
您最初的想法很好,您确实可以执行类似的操作来缓存先前的位置,以便在下一个循环迭代中使用。
我不确定你为什么要涉及计时器,因为将 dt 添加到计时器可能会得到 0 或 1 以外的结果(假设 dt 是 deltatime,这通常会导致一个小于 1 且大于 0 的数字)。
以下代码将按预期工作:
local varPreviousPositionX
local varPreviousPositionY
local function objectTracking()
if varPreviousPositionX and varPreviousPositionY then
-- do something with it
end
-- move body
varPreviousPositionX = object.body:getX()
varPreviousPositionY = object.body:getY()
end