diff --git a/blight-game/src/main/java/de/blight/game/control/PlayerInputControl.java b/blight-game/src/main/java/de/blight/game/control/PlayerInputControl.java index f422b51..f30a063 100644 --- a/blight-game/src/main/java/de/blight/game/control/PlayerInputControl.java +++ b/blight-game/src/main/java/de/blight/game/control/PlayerInputControl.java @@ -219,7 +219,7 @@ public class PlayerInputControl { duration = resolveClipLength(action, 1.5f); } blockingAnimActive = true; - blockingAnimRemaining = Math.max(duration - (1f / 60f), 0f); + blockingAnimRemaining = duration + (1f / 60f); blockingAnimTotal = duration; blockingAnimCallback = onComplete; autopilotDir = null; @@ -548,10 +548,10 @@ public class PlayerInputControl { Quaternion facing = visual.getLocalRotation().clone(); Vector3f worldOffset = facing.mult(new Vector3f(kf.tx, kf.ty, kf.tz)); kfOffsetTarget.set(worldOffset); - kfOffsetCurrent.set(worldOffset); - kfOffsetSpeed = 0f; - visual.setLocalTranslation(visualBaseTranslation.clone().addLocal(kfOffsetCurrent)); - log.info("[KF] Clip '{}' → Offset ({},{},{}) sofort", clip, worldOffset.x, worldOffset.y, worldOffset.z); + if (kfOffsetCurrent.distanceSquared(worldOffset) > 1e-4f) { + kfOffsetSpeed = 5.0f; + } + log.info("[KF] Clip '{}' → Offset-Ziel ({},{},{})", clip, worldOffset.x, worldOffset.y, worldOffset.z); } public void clearKfOffset() {