gd: added input addon
This commit is contained in:
42
guide_examples/mouse_position_3d/camera_control.gd
Normal file
42
guide_examples/mouse_position_3d/camera_control.gd
Normal file
@ -0,0 +1,42 @@
|
||||
## GUIDE makes controlling a camera pretty easy. By using the
|
||||
## window-relative and scale modifiers we can translate mouse input
|
||||
## directly into a format suitable for rotation. GUIDE also takes
|
||||
## care of only sending yaw and pitch input when the camera toggle
|
||||
## is pressed, so we don't need to have any complex input code in
|
||||
## our camera control script.
|
||||
extends Node3D
|
||||
|
||||
@export var camera_pitch:GUIDEAction
|
||||
@export var camera_yaw:GUIDEAction
|
||||
@export var camera_toggle:GUIDEAction
|
||||
@export var camera_move:GUIDEAction
|
||||
|
||||
@export var movement_speed:float = 1
|
||||
@onready var _camera_yaw:Node3D = %CameraYaw
|
||||
@onready var _camera_pitch:SpringArm3D = %CameraPitch
|
||||
|
||||
func _ready():
|
||||
camera_toggle.triggered.connect(_hide_mouse)
|
||||
camera_toggle.completed.connect(_show_mouse)
|
||||
camera_yaw.triggered.connect(_yaw)
|
||||
camera_pitch.triggered.connect(_pitch)
|
||||
|
||||
func _hide_mouse():
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
func _show_mouse():
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
|
||||
func _yaw():
|
||||
_camera_yaw.rotate_y(camera_yaw.value_axis_1d)
|
||||
|
||||
func _pitch():
|
||||
_camera_pitch.rotate_x(camera_pitch.value_axis_1d)
|
||||
_camera_pitch.rotation_degrees.x = clamp(_camera_pitch.rotation_degrees.x, -75.0, 0.0)
|
||||
|
||||
|
||||
func _process(delta):
|
||||
# we already used the input-swizzle modifier to get forward as -z, backward as z
|
||||
# left as -x and right as x, so we can use this immediately
|
||||
position += basis * camera_move.value_axis_3d * movement_speed * delta
|
||||
|
Reference in New Issue
Block a user