From ec76eb26859c2cf6a64737ec3d81a8bf64730199 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 21 Mar 2024 14:25:41 +0900 Subject: [PATCH] THE cheapest way to resolve right-sided phys bug --- src/net/torvald/terrarum/gameactors/ActorWithBody.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index 705b9eb94..7174f8bd3 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -894,7 +894,7 @@ open class ActorWithBody : Actor { debug1("translate x by $t") } /* 4, 14 */ COLLIDING_RIGHT, COLLIDING_RIGHT or COLLIDING_UD -> { - val t = -newHitbox.endX.modTileDelta() + val t = -newHitbox.endX.modTileDelta() - PHYS_EPSILON_DIST // THE cheapest way to resolve right-sided phys bug newHitbox.translatePosX(t); bounceX = true debug1("translate x by $t") } @@ -979,7 +979,8 @@ open class ActorWithBody : Actor { debug1("offendingTileWorldY=$offendingTileWorldY, offendingHitboxPointY=$offendingHitboxPointY") val displacementAbs = Vector2( - (offendingTileWorldX - offendingHitboxPointX).abs(), + (offendingTileWorldX - offendingHitboxPointX).abs() + + if (selfCollisionStatus and COLLIDING_RIGHT != 0) PHYS_EPSILON_DIST else 0.0, // THE cheapest way to resolve right-sided phys bug (offendingTileWorldY - offendingHitboxPointY).abs() )