diff --git a/spine-c/spine-c/src/spine/IkConstraint.c b/spine-c/spine-c/src/spine/IkConstraint.c index 4f0fa257a..bdd58af5c 100644 --- a/spine-c/spine-c/src/spine/IkConstraint.c +++ b/spine-c/spine-c/src/spine/IkConstraint.c @@ -246,8 +246,9 @@ void spIkConstraint_apply2(spBone *parent, spBone *child, float targetX, float t r0 = q / c2; r1 = c0 / q; r = ABS(r0) < ABS(r1) ? r0 : r1; - if (r * r <= dd) { - y = SQRT(dd - r * r) * bendDir; + y = dd - r * r; + if (y > 0) { + y = SQRT(y) * bendDir; a1 = ta - ATAN2(y, r); a2 = ATAN2(y / psy, (r - l1) / psx); goto break_outer;