mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[libgdx] Fixed some physics constraint behavior when strength is 0.
This commit is contained in:
parent
92a9b88e00
commit
1fcaba8c85
@ -164,11 +164,12 @@ public class PhysicsConstraint implements Updatable {
|
|||||||
if (y) bone.worldY += yOffset * mix * data.y;
|
if (y) bone.worldY += yOffset * mix * data.y;
|
||||||
}
|
}
|
||||||
if (rotateOrShearX || scaleX) {
|
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) {
|
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;
|
rotateOffset += (r - (float)Math.ceil(r * invPI2 - 0.5f) * PI2) * i;
|
||||||
r = rotateOffset * mix + ca;
|
r = rotateOffset * mr + ca;
|
||||||
c = cos(r);
|
c = cos(r);
|
||||||
s = sin(r);
|
s = sin(r);
|
||||||
if (scaleX) {
|
if (scaleX) {
|
||||||
@ -197,7 +198,7 @@ public class PhysicsConstraint implements Updatable {
|
|||||||
rotateOffset += rotateVelocity * step;
|
rotateOffset += rotateVelocity * step;
|
||||||
rotateVelocity *= d;
|
rotateVelocity *= d;
|
||||||
if (remaining < step) break;
|
if (remaining < step) break;
|
||||||
float r = rotateOffset * mix + ca;
|
float r = rotateOffset * mr + ca;
|
||||||
c = cos(r);
|
c = cos(r);
|
||||||
s = sin(r);
|
s = sin(r);
|
||||||
} else if (remaining < step) //
|
} else if (remaining < step) //
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user