summaryrefslogtreecommitdiff
path: root/objects
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-03-13 20:33:47 +0800
committerEltrac <hi@guhub.cn>2025-03-13 20:33:47 +0800
commitef200e9aaeff9d2a8194df3561ee3cf6996ea571 (patch)
tree8638d90ce1fb0b555a58c089b3f860de522cc640 /objects
parent9babe340626007bf28e13c792a68736a09187a49 (diff)
fix: knockback does not work due to velocity overwriting
Diffstat (limited to 'objects')
-rw-r--r--objects/Enemy.lua5
-rw-r--r--objects/Player.lua1
2 files changed, 6 insertions, 0 deletions
diff --git a/objects/Enemy.lua b/objects/Enemy.lua
index 64dea31..a6e7738 100644
--- a/objects/Enemy.lua
+++ b/objects/Enemy.lua
@@ -54,6 +54,11 @@ function Enemy:move(dt)
self.speed = self.originalSpeed
end
+ -- deal with punched status
+ if self.punched and self.punched > G.time then
+ return
+ end
+
if self.movePattern == "vertical" then
self:moveVertical(G.player.x, dt)
else self:moveTo(G.player.x, G.player.y, dt)
diff --git a/objects/Player.lua b/objects/Player.lua
index c23fb14..74f9833 100644
--- a/objects/Player.lua
+++ b/objects/Player.lua
@@ -127,6 +127,7 @@ function Player:punch(target)
-- check if enemy is in range
if distance <= attack_radius + enemy.r + self.r and angle_diff <= math.rad(attack_angle / 2) then
enemy:takeDamage(config.player.punch.damage)
+ enemy.punched = G.time + config.player.punch.cooldown
-- knock back enemy
local normEdx, normEdy = edx / distance, edy / distance
local knockbackX, knockbackY = normEdx * knockback_force, normEdy * knockback_force