Advertisement
Guest User

braccio

a guest
Jun 24th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.31 KB | None | 0 0
  1.  public class RobotJoint : MonoBehaviour
  2.     {
  3.  
  4.         [Header("Joint Limits")]
  5.         // minimo e massimo della rotazione
  6.         public Vector3 Axis;
  7.         public float MinAngle;
  8.         public float MaxAngle;
  9.  
  10.         [Header("Initial position")]
  11.        
  12.         [ReadOnly]
  13.         public Vector3 StartOffset;
  14.  
  15.        
  16.         [ReadOnly]
  17.         public Vector3 ZeroEuler;
  18.  
  19.  
  20.  
  21.  
  22.         [Header("Movement")]
  23.         // Indica la velocità a zero, da questa distanza
  24.         [Range(0, 1f)]
  25.         public float SlowdownThreshold = 0.5f;
  26.         [Range(0, 360f)]
  27.         public float Speed = 360f; // gradi per secondo
  28.  
  29.  
  30.  
  31.  
  32.         void Awake()
  33.         {
  34.             ZeroEuler = transform.localEulerAngles;
  35.             StartOffset = transform.localPosition;
  36.         }
  37.  
  38.        
  39.         void Update()
  40.         {
  41.            
  42.         }
  43.  
  44.  
  45.         // muove l'angolo di una costante per non andare a scatti .
  46.         // Restituisce il nuovo angolo .
  47.         public float ClampAngle(float angle, float delta = 0)
  48.         {
  49.             return Mathf.Clamp(angle + delta, MinAngle, MaxAngle);
  50.         }
  51.  
  52.         // prende l'angolo corrente e ruota in base a cosa attivi se sull asse x y o zeta
  53.         public float GetAngle()
  54.         {
  55.             float angle = 0;
  56.             if (Axis.x == 1) angle = transform.localEulerAngles.x;
  57.             else
  58.             if (Axis.y == 1) angle = transform.localEulerAngles.y;
  59.             else
  60.             if (Axis.z == 1) angle = transform.localEulerAngles.z;
  61.  
  62.             return ClampAngle(angle);
  63.         }
  64.         public float SetAngle(float angle)
  65.         {
  66.             angle = ClampAngle(angle);
  67.             if (Axis.x == 1) transform.localEulerAngles = new Vector3(angle, 0, 0);
  68.             else
  69.             if (Axis.y == 1) transform.localEulerAngles = new Vector3(0, angle, 0);
  70.             else
  71.             if (Axis.z == 1) transform.localEulerAngles = new Vector3(0, 0, angle);
  72.  
  73.             return angle;
  74.         }
  75.  
  76.  
  77.  
  78.         // muove l'angolo nell range quello dell inizio min e max
  79.         public float MoveArm(float angle)
  80.         {
  81.             return SetAngle(angle);
  82.         }
  83.  
  84.         private void OnDrawGizmos()
  85.         {
  86.             Debug.DrawLine(transform.position, transform.parent.position, Color.red);
  87.         }
  88.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement