From 6bb195da90635eee38bb9b92d601ce8ef984b4cc Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 13 Oct 2026 21:43:05 +0200 Subject: [PATCH] =?UTF-8?q?Zweih=C3=A4nder:=20g1=20an=20rechter=20Hand=20a?= =?UTF-8?q?npinnen,=20Swing=20auf=20linken=20Handballen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../items/weapon/rostiger_zweihaender.item | 4 ++-- .../game/control/NpcWeaponAttachmentControl.java | 9 +++++---- .../game/control/WeaponAttachmentControl.java | 15 +++++++-------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/blight-assets/src/main/resources/items/weapon/rostiger_zweihaender.item b/blight-assets/src/main/resources/items/weapon/rostiger_zweihaender.item index 87a93a8..d04ffd2 100644 --- a/blight-assets/src/main/resources/items/weapon/rostiger_zweihaender.item +++ b/blight-assets/src/main/resources/items/weapon/rostiger_zweihaender.item @@ -13,13 +13,13 @@ "grip": { "posX": 0.10248406, "posY": 0.104730606, - "posZ": 0.5130257, + "posZ": 0.4630257, "rotX": 0.0, "rotY": 0.0, "rotZ": 0.0, "grip2PosX": 0.0024840608, "grip2PosY": 0.104730606, - "grip2PosZ": 0.5630257, + "grip2PosZ": 0.6630257, "handOffsetX": 0.0, "handOffsetY": 0.0, "handOffsetZ": 0.0 diff --git a/blight-game/src/main/java/de/blight/game/control/NpcWeaponAttachmentControl.java b/blight-game/src/main/java/de/blight/game/control/NpcWeaponAttachmentControl.java index 7f344da..00c00d1 100644 --- a/blight-game/src/main/java/de/blight/game/control/NpcWeaponAttachmentControl.java +++ b/blight-game/src/main/java/de/blight/game/control/NpcWeaponAttachmentControl.java @@ -246,17 +246,18 @@ public class NpcWeaponAttachmentControl extends AbstractControl { Vector3f leftHandballen = (palmOffsetLocal != null) ? leftHandInChar.subtract(leftBoneRotInChar.mult(palmOffsetLocal.mult(0.5f))) : leftHandInChar; + leftHandballen.addLocal(0.10f, 0f, 0f); + // Swing: Griffachse auf linken Handballen ausrichten (inkl. X-Korrektur) Vector3f currentGripDir = weaponRot.mult(g2.subtract(g1).normalizeLocal()); - Vector3f targetDir = leftHandInChar.subtract(bonePosInChar).normalizeLocal(); + Vector3f targetDir = leftHandballen.subtract(bonePosInChar).normalizeLocal(); float dot = currentGripDir.dot(targetDir); if (dot > 0f) { weaponRot = swingFromTo(currentGripDir, targetDir).mult(weaponRot); } - Vector3f midGrip = g1.add(g2).multLocal(0.5f); - Vector3f midTarget = bonePosInChar.add(leftHandballen).multLocal(0.5f); - Vector3f weaponPos = midTarget.subtract(weaponRot.mult(midGrip)); + // g1 exakt an der rechten Hand anpinnen — linke-Hand-Korrekturen beeinflussen rechte nicht + Vector3f weaponPos = bonePosInChar.subtract(weaponRot.mult(g1)); s.setLocalRotation(weaponRot); s.setLocalTranslation(weaponPos); } diff --git a/blight-game/src/main/java/de/blight/game/control/WeaponAttachmentControl.java b/blight-game/src/main/java/de/blight/game/control/WeaponAttachmentControl.java index e9b8211..9050c6e 100644 --- a/blight-game/src/main/java/de/blight/game/control/WeaponAttachmentControl.java +++ b/blight-game/src/main/java/de/blight/game/control/WeaponAttachmentControl.java @@ -297,19 +297,18 @@ public class WeaponAttachmentControl extends AbstractControl { Vector3f leftHandballen = (palmOffsetLocal != null) ? leftHandInChar.subtract(leftBoneRotInChar.mult(palmOffsetLocal.mult(0.5f))) : leftHandInChar; + leftHandballen.addLocal(0.10f, 0f, 0f); - Vector3f currentGripDir = weaponRot.mult(g2.subtract(g1).normalizeLocal()); - Vector3f targetDir = leftHandInChar.subtract(bonePosInChar).normalizeLocal(); - float dot = currentGripDir.dot(targetDir); - + // Swing: Griffachse auf linken Handballen ausrichten (inkl. X-Korrektur) + Vector3f currentGripDir = weaponRot.mult(g2.subtract(g1).normalizeLocal()); + Vector3f targetDir = leftHandballen.subtract(bonePosInChar).normalizeLocal(); + float dot = currentGripDir.dot(targetDir); if (dot > 0f) { weaponRot = swingFromTo(currentGripDir, targetDir).mult(weaponRot); } - // Midpoint-Anker: Mitte von g1–g2 auf Mitte beider Handballen legen - Vector3f midGrip = g1.add(g2).multLocal(0.5f); - Vector3f midTarget = bonePosInChar.add(leftHandballen).multLocal(0.5f); - Vector3f weaponPos = midTarget.subtract(weaponRot.mult(midGrip)); + // g1 exakt an der rechten Hand anpinnen — linke-Hand-Korrekturen beeinflussen rechte nicht + Vector3f weaponPos = bonePosInChar.subtract(weaponRot.mult(g1)); weaponSpatial.setLocalRotation(weaponRot); weaponSpatial.setLocalTranslation(weaponPos); }