mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-04 15:00:09 +01:00
* Remove unnecessary use of `self`
* Connect to signals directly over `connect("name")`
* Use `call_deferred` on callables over `call_deferred("name"))`
* Emit signals directly over `emit_signal("name"...)`
36 lines
828 B
GDScript
36 lines
828 B
GDScript
extends Camera3D
|
|
|
|
|
|
const ROTATION_COEFF = 0.02
|
|
|
|
var _rotation_enabled = false
|
|
var _rotation_pivot
|
|
|
|
|
|
func _ready():
|
|
_initialize_pivot.call_deferred()
|
|
|
|
|
|
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)
|