Selaa lähdekoodia

[lua] Fix 1-bone IK, see #1692.

badlogic 5 vuotta sitten
vanhempi
commit
dcc6925e90
1 muutettua tiedostoa jossa 8 lisäystä ja 4 poistoa
  1. 8 4
      spine-lua/IkConstraint.lua

+ 8 - 4
spine-lua/IkConstraint.lua

@@ -102,10 +102,14 @@ function IkConstraint:apply1 (bone, targetX, targetY, compress, stretch, uniform
 		tx = targetX - bone.worldX
 		ty = targetY - bone.worldY
 	elseif bone.data.transformMode == TransformMode.noRotationOrReflection then
-		rotationIK = rotationIK + Math.atan2(pc, pa) * MathUtils.radDeg
-		local ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc)
-		pb = -pc * ps
-		pd = pa * ps
+		local s = math_abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
+		local sa = pa / bone.skeleton.scaleX;
+		local sc = pc / bone.skeleton.scaleY;
+		pb = -sc * s * bone.skeleton.scaleX;
+		pd = sa * s * bone.skeleton.scaleY;
+		rotationIK = rotationIK + math_deg(math_atan2(sc, sa));
+
+
 		local x = targetX - p.worldX
 		local y = targetY - p.worldY
 		local d = pa * pd - pb * pc