map-functions.lua:60: 尝试索引空值 (love2d, physics)

我知道这个错误是由于索引不存在引起的,但我不知道为什么它不存在。我正在尝试在 mapDraw 方法中实现一个程序 使每个墙砖(#)添加一个物理对象:

function drawMap()
  objects = {}
  for x,column in ipairs(TileTable) do
    for y,char in ipairs(column) do
      love.graphics.draw(Tileset, Quads[ char ] , (x-1)*TileW, (y-1)*TileH)
      if char == '#' then --添加碰撞物理的墙--
        objects[objectIndex] = {
          body = love.physics.newBody(world, (x-1/2) * TileW, (x-1/2) * TileH),
          shape = love.physics.newRectangleShape(32, 32),
          fixture = love.physics.newFixture(objects[objectIndex].body, objects[objectIndex].shape, 1)
        }
      end
    end
  end
end

我刚刚开始使用love2d和制作游戏,希望得到帮助,谢谢。

点赞
用户1190388
用户1190388

在下面这段代码中:

objects[objectIndex] = {
  body = love.physics.newBody(world, (x-1/2) * TileW, (x-1/2) * TileH),
  shape = love.physics.newRectangleShape(32, 32),
  fixture = love.physics.newFixture(objects[objectIndex].body, objects[objectIndex].shape, 1)
}

你在编写代码时对表键进行了自我引用,这是 lua 中的非法操作。应该在后面为 fixture 键分配一个值:

objects[objectIndex] = {
  body = love.physics.newBody(world, (x-1/2) * TileW, (x-1/2) * TileH),
  shape = love.physics.newRectangleShape(32, 32)
}
objects[objectIndex].fixture = love.physics.newFixture(objects[objectIndex].body, objects[objectIndex].shape, 1)
2017-12-29 13:26:45