浏览代码

[libgdx] Fixed some physics constraint behavior when strength is 0.

Nathan Sweet 1 年之前
父节点
当前提交
1fcaba8c85
共有 1 个文件被更改,包括 5 次插入4 次删除
  1. 5 4
      spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java

+ 5 - 4
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PhysicsConstraint.java

@@ -164,11 +164,12 @@ public class PhysicsConstraint implements Updatable {
 					if (y) bone.worldY += yOffset * mix * data.y;
 				}
 				if (rotateOrShearX || scaleX) {
-					float ca = atan2(bone.c, bone.a), c, s;
+					float ca = atan2(bone.c, bone.a), c, s, mr = 0;
 					if (rotateOrShearX) {
-						float dx = cx - bone.worldX, dy = cy - bone.worldY, r = atan2(dy + ty, dx + tx) - ca - rotateOffset * mix;
+						mr = mix * data.rotate;
+						float dx = cx - bone.worldX, dy = cy - bone.worldY, r = atan2(dy + ty, dx + tx) - ca - rotateOffset * mr;
 						rotateOffset += (r - (float)Math.ceil(r * invPI2 - 0.5f) * PI2) * i;
-						r = rotateOffset * mix + ca;
+						r = rotateOffset * mr + ca;
 						c = cos(r);
 						s = sin(r);
 						if (scaleX) {
@@ -197,7 +198,7 @@ public class PhysicsConstraint implements Updatable {
 								rotateOffset += rotateVelocity * step;
 								rotateVelocity *= d;
 								if (remaining < step) break;
-								float r = rotateOffset * mix + ca;
+								float r = rotateOffset * mr + ca;
 								c = cos(r);
 								s = sin(r);
 							} else if (remaining < step) //