extends Spatial export var camera_dist = 50 export var angle_speed = 15 var ang = Vector3() func _ready(): ang = $Camera.rotation_degrees func _process(delta): ang.y += angle_speed * delta set_camera_angle(ang) func _input(event): if event is InputEventMouseMotion: ang.y -= (event.relative.x * 360 / 1280) ang.x -= (event.relative.y * 180 / 720) set_camera_angle(ang) func set_camera_angle(angle): var pos = Vector3() var d = abs(camera_dist * cos(deg2rad(angle.x))) pos.y = camera_dist * sin(deg2rad(-angle.x)) pos.z = d * cos(deg2rad(angle.y)) pos.x = d * sin(deg2rad(angle.y)) $Camera.rotation_degrees = angle $Camera.translation = pos