فهرست منبع

Fixed 1-bone IK for transform mode noRotationOrReflection when skeleton scale is applied.

Nathan Sweet 5 سال پیش
والد
کامیت
5cab7e9460
1فایلهای تغییر یافته به همراه6 افزوده شده و 4 حذف شده
  1. 6 4
      spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java

+ 6 - 4
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/IkConstraint.java

@@ -185,10 +185,12 @@ public class IkConstraint implements Updatable {
 			ty = targetY - bone.worldY;
 			break;
 		case noRotationOrReflection:
-			rotationIK += atan2(pc, pa) * radDeg;
-			float ps = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
-			pb = -pc * ps;
-			pd = pa * ps;
+			float s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc);
+			float sa = pa / bone.skeleton.scaleX;
+			float sc = pc / bone.skeleton.scaleY;
+			pb = -sc * s * bone.skeleton.scaleX;
+			pd = sa * s * bone.skeleton.scaleY;
+			rotationIK += atan2(sc, sa) * radDeg;
 			// Fall through.
 		default:
 			float x = targetX - p.worldX, y = targetY - p.worldY;