Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua love2d-love.physics/love.body/grid_Lua_Game Engine_Game Physics_Love2d - Fatal编程技术网

Lua love2d-love.physics/love.body/grid

Lua love2d-love.physics/love.body/grid,lua,game-engine,game-physics,love2d,Lua,Game Engine,Game Physics,Love2d,你好,我正在玩Lua/Love2D,我想知道是否有可能同时使用grid和love.body。我想制作和测试网格,我还想制作一个世界=love.physics.newWorld来设置重力0,0,并使用love.body:applyForce给它一种空间般的感觉 所以现在我有一个球员 <code> player = {} player.gridx = 64 player.gridy = 64 player.acty = 200 player.speed = 32 </c

你好,我正在玩Lua/Love2D,我想知道是否有可能同时使用grid和love.body。我想制作和测试网格,我还想制作一个世界=love.physics.newWorld来设置重力0,0,并使用love.body:applyForce给它一种空间般的感觉

所以现在我有一个球员

<code>
  player = {}
    player.gridx = 64
player.gridy = 64
player.acty = 200
player.speed = 32
</code>
因为我正在使用网格,但我还想添加

  <code>
world = love.physics.newWorld(0, 0, true)

   In   love.load()
  </code>
然后在球员课上

 <code>
 player = {}
  player.body = love.physics.newBody(world, 200, 550, "dynamic")
  player.body:setMass(100) -- make it pretty light
  player.shape = love.physics.newRectangleShape(0, 0, 30, 15)
  player.fixture = love.physics.newFixture(player.body, player.shape, 2) 
  player.fixture:setRestitution(0.4)    -- make it bouncy
</code>
然后使用

<code>
 if love.keyboard.isDown("right") then
 player.body:applyForce(10, 0.0)
 print("moving right")
 elseif love.keyboard.isDown("left") then
 player.body:applyForce(-10, 0.0)
 print("moving left")
 end
if love.keyboard.isDown("up") then
player.body:applyForce(0, -500)
elseif love.keyboard.isDown("down") then
player.body:applyForce(0, 100)
end
</code>
而不是

<code>
  function love.keypressed(key)

  if key == "up" then
    if testMap(0, -1) then
        player.gridy = player.gridy - 32
    end
 elseif key == "down" then
    if testMap(0, 1) then
        player.gridy = player.gridy + 32
     end
   elseif key == "left" then
    if testMap(-1, 0) then
        player.gridx = player.gridx - 32
    end
  elseif key == "right" then
    if testMap(1, 0) then
        player.gridx = player.gridx + 32
    end
  end
 end
</code>
你绝对可以

我觉得你想要的是展示一个受物理影响的身体(在这个例子中,是你的玩家精灵)

如果是这样,在love.draw块中,在绘制四边形/网格时只需使用player.body.getY()和player.body.getY()

例:

会在屏幕上画一个受物理引擎影响的球

或者,您可能会询问有关世界坐标转换的问题。ie:您希望使用64,64而不是使用BOX2D坐标,在这种情况下,请查看getWorldPoint方法:


我不清楚你不能做什么。您是说您想使用Box2d物理,但只移动到谨慎的网格位置?还是别的什么
function love.draw()
     love.graphics.circle( "fill", player.body:getX(), player.body:getY(), 50, 100 )