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方法中创建项目符号数组。不在敌方文件中。