所有这些射弹都朝一个方向前进
All these projectiles going in 1 direction
伙计们,基本上我在 Lua 的不同位置都有这段代码(不想 post 所有代码都在这里)。我想在 love2d 上制作游戏。我的问题是:我的射弹总是朝一个方向前进。我什至做了 projectile.animnumber 但它仍然朝着 1 个方向前进。有什么办法可以分裂这个巨大的。 (我是新手,不要喷我太多)
projectile = {}
projectile.width = 30
projectile.height = 32
projectile.animNumber = 1
function love.keyreleased(key)
if (key == "space") then
shoot()
love.audio.play(magic_shotSND)
if player.animNumber == 1 then
projectile.animNumber = 1
elseif player.animNumber == 2 then
projectile.animNumber = 2
elseif player.animNumber == 3 then
projectile.animNumber = 3
else
projectile.animNumber = 4
end
end
end
-----
for i,v in ipairs(player.shots) do
if projectile.animNumber == 1 then
v.x = v.x + 300 * dt
elseif projectile.animNumber == 2 then
v.x = v.x - 300 * dt
elseif projectile.animNumber == 3 then
v.y = v.y + 300 * dt
else
v.y = v.y - 300 * dt
end
end
----
function shoot()
local shot = {}
shot.x = player.x - 16
shot.y = player.y - 8
table.insert(player.shots, shot)
end
for i,v in ipairs(player.shots) do
love.graphics.draw(skull, v.x, v.y)
end
将您所有的 "projectile.animNumber" 替换为 "v.animNumber"
我认为问题是这样的:
for i,v in ipairs(player.shots) do
if projectile.animNumber == 1 then
v.x = v.x + 300 * dt
elseif projectile.animNumber == 2 then
v.x = v.x - 300 * dt
elseif projectile.animNumber == 3 then
v.y = v.y + 300 * dt
else
v.y = v.y - 300 * dt
end
end
在您的 for 循环中,您正在检查 projectile.animNumber,它以前没有出现在您的代码中。因此,使 else 语句为真并使所有射弹沿 1 个方向行进。
抱歉,如果这让您感到困惑;我不太会解释事情
伙计们,基本上我在 Lua 的不同位置都有这段代码(不想 post 所有代码都在这里)。我想在 love2d 上制作游戏。我的问题是:我的射弹总是朝一个方向前进。我什至做了 projectile.animnumber 但它仍然朝着 1 个方向前进。有什么办法可以分裂这个巨大的。 (我是新手,不要喷我太多)
projectile = {}
projectile.width = 30
projectile.height = 32
projectile.animNumber = 1
function love.keyreleased(key)
if (key == "space") then
shoot()
love.audio.play(magic_shotSND)
if player.animNumber == 1 then
projectile.animNumber = 1
elseif player.animNumber == 2 then
projectile.animNumber = 2
elseif player.animNumber == 3 then
projectile.animNumber = 3
else
projectile.animNumber = 4
end
end
end
-----
for i,v in ipairs(player.shots) do
if projectile.animNumber == 1 then
v.x = v.x + 300 * dt
elseif projectile.animNumber == 2 then
v.x = v.x - 300 * dt
elseif projectile.animNumber == 3 then
v.y = v.y + 300 * dt
else
v.y = v.y - 300 * dt
end
end
----
function shoot()
local shot = {}
shot.x = player.x - 16
shot.y = player.y - 8
table.insert(player.shots, shot)
end
for i,v in ipairs(player.shots) do
love.graphics.draw(skull, v.x, v.y)
end
将您所有的 "projectile.animNumber" 替换为 "v.animNumber"
我认为问题是这样的:
for i,v in ipairs(player.shots) do
if projectile.animNumber == 1 then
v.x = v.x + 300 * dt
elseif projectile.animNumber == 2 then
v.x = v.x - 300 * dt
elseif projectile.animNumber == 3 then
v.y = v.y + 300 * dt
else
v.y = v.y - 300 * dt
end
end
在您的 for 循环中,您正在检查 projectile.animNumber,它以前没有出现在您的代码中。因此,使 else 语句为真并使所有射弹沿 1 个方向行进。
抱歉,如果这让您感到困惑;我不太会解释事情