private void Start() { _fingerBones = new List <UnityBone>(transform.gameObject.GetComponentsInChildren <UnityBone>()); _fingerBonesRotation = new List <Quaternion>(); _tip = _fingerBones[3]; _target = GetTarget(GetComponentInParent <Transform>()); _selectObject = GameObject.Find("Main Camera").GetComponent <SelectObject>(); foreach (UnityBone bone in _fingerBones) { _fingerBonesRotation.Add(bone.transform.localRotation); } }
/// <summary> /// Calculates the Slope for movement /// </summary> /// <param name="bone"></param> /// <returns>returns calculated slope</returns> private float CalculateSlope(UnityBone bone) { float deltaTheta = 0.1f; _target = GetTarget(_tip.transform); float distance1 = Vector3.Distance(GetPositionOfBone(_tip), _target); bone.transform.Rotate(Vector3.forward * deltaTheta); float distance2 = Vector3.Distance(GetPositionOfBone(_tip), _target); bone.transform.Rotate(Vector3.forward * -deltaTheta); return((distance2 - distance1) / deltaTheta); }
/// <summary> /// Returns position of the provided UnityBone /// </summary> /// <param name="bone">UnityBone</param> /// <returns>returns Position of parameter bone</returns> private Vector3 GetPositionOfBone(UnityBone bone) { return(bone.transform.position); }