Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node3D
- @onready var camera_pivot: Node3D = $CameraPivot
- @onready var scene_camera: Camera3D = $CameraPivot/Camera3D
- @onready var camera_up_vector: Vector3 = scene_camera.global_basis.y
- @onready var camera_right_vector: Vector3 = scene_camera.global_basis.x
- var base_value := 1.0
- var rotation_speed := 0.05
- var input_vector: Vector2 = Vector2.ZERO
- func _unhandled_input(event: InputEvent) -> void:
- if event is InputEventMouseButton:
- if Input.is_mouse_button_pressed(MOUSE_BUTTON_WHEEL_LEFT):
- if event.shift_pressed:
- input_vector.x = -base_value
- pan_camera()
- if event.ctrl_pressed:
- zoom_camera(base_value)
- else:
- camera_pivot.rotation.y -= rotation_speed
- elif Input.is_mouse_button_pressed(MOUSE_BUTTON_WHEEL_UP):
- if event.ctrl_pressed:
- zoom_camera(-base_value)
- else:
- camera_pivot.rotation.x -= rotation_speed
- elif Input.is_mouse_button_pressed(MOUSE_BUTTON_WHEEL_DOWN):
- if event.ctrl_pressed:
- zoom_camera(base_value)
- else:
- camera_pivot.rotation.x += rotation_speed
- elif Input.is_mouse_button_pressed(MOUSE_BUTTON_WHEEL_RIGHT):
- if event.shift_pressed:
- pan_camera()
- if event.ctrl_pressed:
- zoom_camera(-base_value)
- else:
- camera_pivot.rotation.y += rotation_speed
- func zoom_camera(input_value: float):
- var max_dist := 10.0
- scene_camera.position.z += (input_value * 0.25)
- scene_camera.position.z = clampf(scene_camera.position.z, 1.0, max_dist)
- func pan_camera():
- var move_dir = (camera_right_vector * input_vector.x) + (camera_up_vector * input_vector.y)
- print("panning camera")
- return move_dir
Advertisement
Add Comment
Please, Sign In to add comment