diff options
| author | Eltrac <hi@guhub.cn> | 2025-03-13 20:33:47 +0800 |
|---|---|---|
| committer | Eltrac <hi@guhub.cn> | 2025-03-13 20:33:47 +0800 |
| commit | ef200e9aaeff9d2a8194df3561ee3cf6996ea571 (patch) | |
| tree | 8638d90ce1fb0b555a58c089b3f860de522cc640 /objects | |
| parent | 9babe340626007bf28e13c792a68736a09187a49 (diff) | |
fix: knockback does not work due to velocity overwriting
Diffstat (limited to 'objects')
| -rw-r--r-- | objects/Enemy.lua | 5 | ||||
| -rw-r--r-- | objects/Player.lua | 1 |
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 |
