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#
		
	
| 
								 
											1 year 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));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |