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 多重敌人和子弹_Lua_Coronasdk - Fatal编程技术网

Lua 多重敌人和子弹

Lua 多重敌人和子弹,lua,coronasdk,Lua,Coronasdk,我在制造一个能开枪的敌人 我有一个敌人.lua文件 在里面,我有一个子弹清单: local bullets = {} 当我在main.lua中创建其中两个时,问题就出现了,其中只有一个会发射。我想他们两人的名单是一样的 例如,敌方1和敌方2各发射一颗子弹,但未显示敌方2的子弹。但是,它们的两个列表都返回1。在我移除敌人1的子弹后,他们的两个列表都返回0 如何使它像类一样工作(就像在其他编程语言中一样)。据我所知,它不应该以这种方式工作 谢谢大家! 编辑1: 我有一个敌人,卢阿。 与答案不同,我

我在制造一个能开枪的敌人

我有一个
敌人.lua
文件

在里面,我有一个子弹清单:

local bullets = {}
当我在
main.lua
中创建其中两个时,问题就出现了,其中只有一个会发射。我想他们两人的名单是一样的

例如,敌方1和敌方2各发射一颗子弹,但未显示敌方2的子弹。但是,它们的两个列表都返回1。在我移除敌人1的子弹后,他们的两个列表都返回0

如何使它像类一样工作(就像在其他编程语言中一样)。据我所知,它不应该以这种方式工作

谢谢大家!

编辑1: 我有一个敌人,卢阿。 与答案不同,我是这样编码的

local enemy = {} -- at the start
local bullet= {} -- it is another list

-- in between I have functions
-- for examples
function enemy.new()
function enemy:shoot()
function enemy:update()

return enemy -- at the end

我认为您试图将敌人作为一个类来使用,并尝试更改特定于对象的“子弹”。当您尝试这样做时,lua会更改模块中的变量,而不是对象中的变量。这就是为什么敌人只填写一份名单。为了避免这种情况,我建议您使用以下方法:

-- enemy.lua file :

function createEnemy()
   local newEnemy = {}

   -- Add some fields
   newEnemy.image = display.newImage(....)
   newEnemy.bullets = 3

   -- Add some methods if necessary
   newEnemy:shoot = function()
      newEnemy.bullets = newEnemy.bullets - 1
   end

   return newEnemy
end
-- game.lua file :

require("enemy")

-- Array to hold enemies.
local enemies = {}
for i=1, 10 do
    enemies[#enemies+1] = enemy.createEnemy()
end
方法和字段只是示例。你应该根据需要更换它们。通过这种方式,您将使用自己的字段和方法创建一个敌方对象。就像其他oop设计一样

继续编码^^

---补充:

您应该以面向对象的方式使用这种结构。你应该有一些数组来到达你的对象。以及操作它们的方法。例如,您可以使用如下内容:

-- enemy.lua file :

function createEnemy()
   local newEnemy = {}

   -- Add some fields
   newEnemy.image = display.newImage(....)
   newEnemy.bullets = 3

   -- Add some methods if necessary
   newEnemy:shoot = function()
      newEnemy.bullets = newEnemy.bullets - 1
   end

   return newEnemy
end
-- game.lua file :

require("enemy")

-- Array to hold enemies.
local enemies = {}
for i=1, 10 do
    enemies[#enemies+1] = enemy.createEnemy()
end

如果您仍然有一些问题,我建议您学习面向对象逻辑

对不起,迟了答复。你能告诉我我的电脑有什么问题吗?我将在我的问题中展示它们。嗯,你的意思是子弹应该成为新敌人的一部分吗?我编辑了我的答案。要更新它们,您应该有额外的方法,比如“shoot”方法。要调用该方法,您可以只调用敌人[1]。例如shoot()。我刚刚意识到您仍然不使用新创建的子弹数组。您应该仅在CreateForeign方法中创建项目符号数组。不在敌方文件中。