private void rotateAroundPoint(Vector2 point, float delta) { var transform = control.transform; var corners = control.GetCorners(); var plane = new Plane(corners[0], corners[1], corners[2]); var ray = control.GetCamera().ScreenPointToRay(point); var distance = 0f; plane.Raycast(ray, out distance); var worldAnchor = ray.GetPoint(distance); var deltaAngle = new Vector3(0, 0, delta); var angles = (transform.eulerAngles + deltaAngle); var newPos = rotatePointAroundPivot(transform.position, worldAnchor, deltaAngle); transform.position = newPos; transform.eulerAngles = angles; }