Rigidbody2D.rotation unclear behaviour
Hi all, ive come to the unclear behaviour of Rigidbody2D.rotation property. It keeps increasing when body keep rotating:
rigidbody2D.rotation // keeps rotating and overflow +360 and underflow -360
rigidbody2D.transform.rotation.eulerAngles.z // shows rotation between 0 and +360
Accounted problems:
after rotating a while (after million completed rotations), vehicle wheel is not able to smoothly change rotation speed, but whole vehicle can smoothly accelerate, so wheel rotation is out of sync with vehicle speed (without touching the rotation property, simply rotating on ground)
after full rotation of rigidbodyA, programatically created hinge joint with angle limits drastically forces connected rigidbodyB (that didnt do a single rotation) to make equal number of rotations as first rigidbody did before.
I think it is a bug somewhere between Rigidbody2D and my wheel and hinge joint, but i dont know if it is wanted behaviour, or if im not expected to count backflips with Rigidbody2D.rotation, because frontflips may cancel out that backflips and i definitely didnt expect that Rigidbody2D.rotation overflows.
Thanx
PS: providing joint creation script - important is calculating with referenceAngle, this is because i want to define equal angle limits, while effectively canceling the "angle when connecting is done" effect (truck and trailer should have angle limits the same, independently of the angle they are connecting):
private void CreateTowJoint(TowBall towBall, TowCoupling towCoupling) {
towJoint = towBall.GetComponentInParent<Rigidbody2D>().gameObject.AddComponent<HingeJoint2D>();
towJoint.autoConfigureConnectedAnchor = false;
towJoint.enableCollision = false;
towJoint.connectedBody = towCoupling.GetComponentInParent<Rigidbody2D>();
JointAngleLimits2D angleLimits = towJoint.limits;
angleLimits.min = -maxAngle - towJoint.referenceAngle;
angleLimits.max = maxAngle - towJoint.referenceAngle;
towJoint.limits = angleLimits;
towJoint.useLimits = true;
// Prevent collisions between vehicle and trailer
Utils.IgnoreCollisions(towBall.GetParentColliders(), towCoupling.GetParentColliders());
// TODO: refactor joint anchors detection
towJoint.anchor = towBall.transform.localPosition + towBall.GetComponentInParent<Towbar>().transform.localPosition;
towJoint.connectedAnchor = towCoupling.transform.localPosition;
trigger.enabled = false;
//connectedTrailer = towCoupling;
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612105945im_/https://answers.unity.com/themes/thub/images/avi.jpg)