1234567891011121314151617181920212223242526272829303132333435 |
- extends Camera3D
- const ROTATION_COEFF = 0.02
- var _rotation_enabled = false
- var _rotation_pivot
- func _ready():
- call_deferred("_initialize_pivot")
- func _unhandled_input(event):
- var mouse_button_event = event as InputEventMouseButton
- if mouse_button_event:
- if mouse_button_event.button_index == MOUSE_BUTTON_RIGHT:
- _rotation_enabled = mouse_button_event.pressed
- return
- if not _rotation_enabled:
- return
- var mouse_motion_event = event as InputEventMouseMotion
- if mouse_motion_event:
- var rotation_delta = mouse_motion_event.relative.x
- _rotation_pivot.rotate(Vector3.UP, -rotation_delta * ROTATION_COEFF)
- func _initialize_pivot():
- _rotation_pivot = Node3D.new()
- var camera_parent = get_parent()
- camera_parent.add_child(_rotation_pivot)
- camera_parent.remove_child(self)
- _rotation_pivot.add_child(self)
|