You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
955 B
C#
22 lines
955 B
C#
6 months ago
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
|
||
|
public static class JointExtensions{
|
||
|
public static Vector3 Angles(this ConfigurableJoint joint){
|
||
|
float to180(float v) {
|
||
|
if (v > 180) {
|
||
|
v = v - 360;
|
||
|
}
|
||
|
return v;
|
||
|
}
|
||
|
|
||
|
Quaternion jointBasis = Quaternion.LookRotation(joint.secondaryAxis, Vector3.Cross(joint.axis, joint.secondaryAxis));
|
||
|
Quaternion jointBasisInverse = Quaternion.Inverse(jointBasis);
|
||
|
Vector3 rotation;
|
||
|
if(joint.connectedBody != null) rotation = (jointBasisInverse * Quaternion.Inverse(joint.connectedBody.rotation) * joint.GetComponent<Rigidbody>().transform.rotation * jointBasis).eulerAngles;
|
||
|
else rotation = (jointBasisInverse * joint.GetComponent<Rigidbody>().transform.rotation * jointBasis).eulerAngles;
|
||
|
return new Vector3(to180(rotation.x), to180(rotation.z),to180(rotation.y));
|
||
|
}
|
||
|
}
|