From ef200e9aaeff9d2a8194df3561ee3cf6996ea571 Mon Sep 17 00:00:00 2001 From: Eltrac Date: Thu, 13 Mar 2025 20:33:47 +0800 Subject: fix: knockback does not work due to velocity overwriting --- objects/Enemy.lua | 5 +++++ objects/Player.lua | 1 + 2 files changed, 6 insertions(+) (limited to 'objects') 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 -- cgit v1.2.3