//--------------------------------------------------------------------------METHODS: //--------------------------------------------------------------------------HELPERS: private void moveArm(AxisSwapper upperArm, AxisSwapper forearm, AxisSwapper targetForearm, Transform targetHand, bool isRightArm) { var targetElbowPos = targetHand.position - targetForearm.Forward * elbowToWristDistance; Vector3 shoulderToElbow = targetElbowPos - upperArm.transform.position; Vector3 elbowToTarget = targetHand.position - targetElbowPos; // Reversed order if ! left Vector3 up; if (isRightArm) { up = Vector3.Cross(elbowToTarget, shoulderToElbow); } else { up = Vector3.Cross(shoulderToElbow, elbowToTarget); } upperArm.Look(targetElbowPos - upperArm.transform.position, up); forearm.Look(elbowToTarget, up); }
//---------------------------------------------------------------------------FIELDS: //---------------------------------------------------------------------MONO METHODS: void OnDrawGizmos() { if (!enabled) { return; } if (Swapper == null) { Swapper = GetComponent <AxisSwapper>(); } // Draw X Axis Gizmos.color = Color.red; Gizmos.DrawLine(transform.position, Swapper.Right * AXIS_LINE_LENGTH); // Draw Y Axis Gizmos.color = Color.green; Gizmos.DrawLine(transform.position, Swapper.Up * AXIS_LINE_LENGTH); // Draw Z Axis Gizmos.color = Color.blue; Gizmos.DrawLine(transform.position, Swapper.Forward * AXIS_LINE_LENGTH); }