private void StartDragging(MuscleJoint joint) { _isDragging = true; if (_ikHierarchy != null) { DestroyHierarchy(_ikHierarchy); } _jointHierarchy = IKSolver.GetHierarchy(joint); _ikHierarchy = IKSolver.CopyHierarchy(_jointHierarchy); _ikTarget.position = joint.transform.position; _ikTarget.rotation = joint.transform.rotation; Vector3 screenSpacePosition = _camera.GetComponent <Camera>().WorldToScreenPoint(joint.transform.position); _dragDepth = screenSpacePosition.z; Vector3 cursorPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpacePosition.z); _dragOffset = joint.transform.position - _camera.GetComponent <Camera>().ScreenToWorldPoint(cursorPosition); }