From e24d49223929696a96a8525a241505c05913ee63 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 25 May 2017 22:30:36 +0900 Subject: [PATCH] now works for both LR but actor sticks to left cliff but not right --- src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt b/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt index 08612d302..7cc4a165d 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt @@ -837,6 +837,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean //println("endX modDelta: ${simulationHitbox.endX.modTileDelta()}") + //println("startX modDelta: ${simulationHitbox.startX.modTileDelta()}") //println("touching_right_extra: ${isTouchingSide(simulationHitbox, COLLIDING_RIGHT_EXTRA)}") @@ -859,12 +860,18 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean }*/ // --> X-Axis - if (simulationHitbox.endX.modTileDelta() >= 15.99999) { + if (vectorSum.x > 0 && simulationHitbox.endX.modTileDelta() >= 15.99999) { val target = simulationHitbox.endX.div(TILE_SIZE).floorInt().plus(1).times(TILE_SIZE).toDouble() val delta = target - simulationHitbox.endX debug2("xR target: $target, delta: $delta") simulationHitbox.translatePosX(delta) } + else if (vectorSum.x < 0 && simulationHitbox.startX.modTileDelta() >= 0.99999 && simulationHitbox.startX.modTileDelta() < 1.0) { + val target = simulationHitbox.startX.div(TILE_SIZE).floorInt().times(TILE_SIZE).toDouble() + val delta = target - simulationHitbox.startX + debug2("xL target: $target, delta: $delta") + simulationHitbox.translatePosX(delta) + }