如何在love中让弹丸只出现在一个位置

我目前正在使用Lua中的Love2d引擎创建游戏,我想知道是否可以让像弹射物这样的物体出现在一个位置。比如英雄在敌人前方50px处施放火焰柱。理想情况下,火焰柱会出现,伤害敌人,然后消失,所有这些都可以在一个帧中完成。 我现在拥有的代码如下:

local function addProj()
  local speed = dt
  for i, projectile in ipairs(proj) do
    if playerBack == true then
      projectile.y = projectile.y - 250*speed
        if projectile.y < player.y - 150 then
          table.remove(proj,i)
        end
   elseif playerForward == true then
     projectile.y = projectile.y + 250*speed
      if projectile.y > player.y + 150 then
         table.remove(proj,i)
      end
   elseif playerLeft == true then
     projectile.x = projectile.x - 250*speed
       if projectile.x < player.x - 150 then
         table.remove(proj,i)
       end
   elseif playerRight == true then
     projectile.x = projectile.x + 250*speed
       if projectile.x > player.x + 150 then
         table.remove(proj,i)
       end
    end
  end
end

目前代码只是一个解决方法,但基本上它会沿给定方向将弹射物移动一定距离,然后使其消失。感谢任何和所有的帮助!

点赞
用户4656299
用户4656299

好的,最好的方法是设置世界回调并检测碰撞。有很好的教程、示例和文档。基本上,这将使您的程序发现物理对象之间的碰撞。

回调函数教程

回调函数创建页面

如果你想像一些人一样手动处理基础物理,可以将所有对象放在一个表中,然后在每次更新时检查表格以查看它们的x或y值是否匹配,对于大型游戏来说,这显然会减慢游戏速度。

2015-08-13 18:05:44