【发布时间】:2015-01-14 15:55:48
【问题描述】:
我是科罗娜的新手。我正在开发一个简单的 TD 游戏。我有墙壁(路障),玩家可以将它们拖到战场上,然后敌人会蜂拥向目标目的地。如果他们遇到路障,他们会从路障中移除生命值,直到它达到零,然后路障就会消失。
我的路障被杀死和移除的代码如下:
if (barricadeCount == 0) then
print ("No barricades left")
else
for i = 1, totalBarricades do
if (barricade[i].isAttacked == true) and (barricade[i].health == 0) then
print ("REMOOOOOVING BARRICADE", i)
local deadBarricade = table.remove(barricade,i)
deadBarricade:removeSelf()
deadBarricade = nil
totalBarricades = totalBarricades - 1 --one less in the 'total'!
end
if (barricade[i].isAttacked == true) and (barricade[i].health > 0) then
barricade[i].health = barricade[i].health - 10
--and change graphic to show damage
print ("barricade",i,"health is now",barricade[i].health)
end
end
totalBarricades = totalBarricades - 1
现在我遇到的问题是,当第一个路障“死亡”时,我会崩溃并且
'尝试索引字段'?' (零值)
我怀疑它与重新编号的路障阵列的内容有关,但我就是想不通。如果有人能指出我在这里做错了什么,我将非常感激。
【问题讨论】:
-
如果一个对象死了,你将它从数组中删除,但你会立即访问相同的路障[i] 以检查运行状况 - 如果删除的条目是最后一个条目,你将在结束。我会这样做:1)减去健康2)如果健康