extends Camera3D const MOVE_MARGIN = 20 const MOVE_SPEED = 30 @export var min_zoom: float = 10 @export var max_zoom: float = 100 @export var zoom_sensibility: float = 1.4 func _process(delta): var m_pos = get_viewport().get_mouse_position() calc_move(m_pos, delta) if Input.is_action_just_released("zoom_in"): zoom(-1000) if Input.is_action_just_released("zoom_out"): zoom(1000) func calc_move(m_pos, delta): var v_size = Vector2(1152, 648) var move_vec = Vector3() if m_pos.x < MOVE_MARGIN: move_vec.x -= 1 if m_pos.y < MOVE_MARGIN: move_vec.z -= 1 if m_pos.x > v_size.x - MOVE_MARGIN: move_vec.x += 1 if m_pos.y > v_size.y - MOVE_MARGIN: move_vec.z += 1 move_vec = move_vec.rotated(Vector3(0, 1, 0), rotation_degrees.y) global_translate(move_vec * delta * MOVE_SPEED) func zoom(direction : float): #Zooming using fov var new_fov = fov + (sign(direction) * pow(abs(direction),zoom_sensibility)/100 * get_process_delta_time()) fov = clamp(new_fov,min_zoom,max_zoom)