Вы уж извините, но описание как в World of Warships - так себе пояснение. или видео искать или вообще качать игру, чтоб посмотреть как камера вращается. а вам "так же как там" только без пары режимов.(слава богу по коду вроде понятно что вы хотите)
так вот, на сколько я понял, вы хотите по сфере вокруг цели вращаться камерой и иметь возможность менять радиус.
тогда предложил бы просто использовать сферические координаты
relativePosition = SphericalToCartesian(longitude, latitude, orbitRadius);
transform.position = target.transform.position + relativePosition;
private Vector3 SphericalToCartesian(float longitude, float latitude, float radius)
{
float x = radius * Mathf.Sin(latitude) * Mathf.Cos(longitude);
float y = radius * Mathf.Cos(latitude);
float z = radius * Mathf.Sin(latitude) * Mathf.Sin(longitude);
return new Vector3(x, y, z);
}
По сути у вас есть долгота и широта (как на глобусе) и радиус сферы.
Вычисляете координаты на сфере и плюсуете их к позиции target.
Менять широту, долготу и радиус на основе инпута - тут я вижу вы в курсе как.
ну и так к слову- скрипт тут на пару десятков строк, и мало связанный с другим функционалом - даже весь переписав - капитальным ремонтом это сложно назвать