Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class RobotJoint : MonoBehaviour
- {
- [Header("Joint Limits")]
- // minimo e massimo della rotazione
- public Vector3 Axis;
- public float MinAngle;
- public float MaxAngle;
- [Header("Initial position")]
- [ReadOnly]
- public Vector3 StartOffset;
- [ReadOnly]
- public Vector3 ZeroEuler;
- [Header("Movement")]
- // Indica la velocità a zero, da questa distanza
- [Range(0, 1f)]
- public float SlowdownThreshold = 0.5f;
- [Range(0, 360f)]
- public float Speed = 360f; // gradi per secondo
- void Awake()
- {
- ZeroEuler = transform.localEulerAngles;
- StartOffset = transform.localPosition;
- }
- void Update()
- {
- }
- // muove l'angolo di una costante per non andare a scatti .
- // Restituisce il nuovo angolo .
- public float ClampAngle(float angle, float delta = 0)
- {
- return Mathf.Clamp(angle + delta, MinAngle, MaxAngle);
- }
- // prende l'angolo corrente e ruota in base a cosa attivi se sull asse x y o zeta
- public float GetAngle()
- {
- float angle = 0;
- if (Axis.x == 1) angle = transform.localEulerAngles.x;
- else
- if (Axis.y == 1) angle = transform.localEulerAngles.y;
- else
- if (Axis.z == 1) angle = transform.localEulerAngles.z;
- return ClampAngle(angle);
- }
- public float SetAngle(float angle)
- {
- angle = ClampAngle(angle);
- if (Axis.x == 1) transform.localEulerAngles = new Vector3(angle, 0, 0);
- else
- if (Axis.y == 1) transform.localEulerAngles = new Vector3(0, angle, 0);
- else
- if (Axis.z == 1) transform.localEulerAngles = new Vector3(0, 0, angle);
- return angle;
- }
- // muove l'angolo nell range quello dell inizio min e max
- public float MoveArm(float angle)
- {
- return SetAngle(angle);
- }
- private void OnDrawGizmos()
- {
- Debug.DrawLine(transform.position, transform.parent.position, Color.red);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement