JSON:
if not isPathBlocked(enemy, normalizedDirX, normalizedDirY) then.
enemy:setPosition(ex + normalizedDirX * enemy.speed * dt, ey + normalizedDirY * enemy.speed * dt)
else.
-- Engel algılandığında farklı yönler dene.
local directions = {
{0, 1}, -- Aşağı.
{0, -1}, -- Yukarı.
{1, 0}, -- Sağ.
{-1, 0}, -- Sol.
{math.cos(math.pi / 4), math.sin(math.pi / 4)}, -- 45 derece.
{math.cos(-math.pi / 4), math.sin(-math.pi / 4)}, -- -45 derece.
{math.cos(math.pi / 2), math.sin(math.pi / 2)}, -- 90 derece.
{math.cos(-math.pi / 2), math.sin(-math.pi / 2)} -- -90 derece.
}
-- Engelden uzaklaşma ve en iyi yönü bulma.
local moved = false.
for i, dir in ipairs(directions) do.
local testDirX, testDirY = dir[1], dir[2]
if not isPathBlocked(enemy, testDirX, testDirY) then.
enemy:setPosition(ex + testDirX * enemy.speed * dt, ey + testDirY * enemy.speed * dt)
moved = true.
break.
end.
end.
end.
function isPathBlocked(enemy, dirX, dirY)
local ex, ey = enemy:getPosition()
local futureX = ex + dirX * 5 -- Birkaç piksel ileri bak (5 px)
local futureY = ey + dirY * 5
local colliders = world:queryRectangleArea(futureX - 20, futureY - 40, 40, 80, {'Platform'}) -- Engelleri kontrol et.
return #colliders > 0 -- Eğer engel varsa true döner.
end
Görselde de gözüktüğü gibi "enemy" bir engele takıldığında engelden kurtulmak için her seferinde aşağıya doğru hareket ediyor. Bu sorunu çözemiyorum, yardımcı olursanız sevinirim.
Dosya Ekleri
Son düzenleyen: Moderatör: