我一直在尽一切努力让 2D 距离关节在 Unity 中工作。我希望通过关节和连接的身体自由旋转,我还需要遵守质量和其他约束,例如固定刚体的位置。我已经尝试了好几天,配置任何关节类型都没有运气。使用以下方法尝试了一个 verlet 约束:
float xDistance = hinge.transform.position.x - target.transform.position.x;
float yDistance = hinge.transform.position.y - target.transform.position.y;
float newdistance = Mathf.Sqrt( xDistance * xDistance + yDistance * yDistance );
float con = ( newdistance - maxDistance) / newdistance;
Vector3 moveTarget = new Vector3( xDistance * 0.5f * con , yDistance * 0.5f * con, 0.0f );
hinge.rigidbody.MovePosition( hinge.transform.position - moveTarget );
target.rigidbody.MovePosition( target.transform.position + moveTarget );
但这没有考虑质量/力或任何固定装置。你可以在这里看到我想在 X/Y 上移动,只在 Z 上旋转。
帮助?