如何获取一次移动物体的位置?没有更新

问题描述 投票:0回答:1

我有一个物体随着身体“自由”移动: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

那是行不通的。只是想快速写一些东西来帮助您解决问题。

lua game-development lua-table love2d
1个回答
0
投票

您最初的想法很好,您确实可以执行类似的操作来缓存先前的位置,以便在下一个循环迭代中使用。

我不确定你为什么要涉及计时器,因为将 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
© www.soinside.com 2019 - 2024. All rights reserved.