Adds missing data
This commit is contained in:
parent
e6391d9fdd
commit
53cdcc3433
620 changed files with 47293 additions and 151 deletions
60
examples_dd3d/demo_camera_movement.gd
Normal file
60
examples_dd3d/demo_camera_movement.gd
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
extends Camera3D
|
||||
|
||||
@export var mouse_sensitivity := 0.25
|
||||
@export var camera_speed := 10.0
|
||||
@export var camera_speed_fast := 30.0
|
||||
|
||||
var btn_clicked := false
|
||||
const hPI := PI/2
|
||||
var rot_x := 0.0
|
||||
var rot_y := 0.0
|
||||
|
||||
|
||||
func _ready():
|
||||
reset_input_rotation()
|
||||
|
||||
|
||||
func _unhandled_input(event) -> void:
|
||||
if event is InputEventMouseButton:
|
||||
btn_clicked = event.pressed
|
||||
|
||||
|
||||
func reset_input_rotation():
|
||||
rot_x = rotation.y
|
||||
rot_y = rotation.x
|
||||
|
||||
|
||||
func _input(event) -> void:
|
||||
if btn_clicked:
|
||||
if event is InputEventMouseMotion:
|
||||
if event.button_mask == MOUSE_BUTTON_LEFT:
|
||||
rot_x += -deg_to_rad(event.relative.x * mouse_sensitivity)
|
||||
rot_y += -deg_to_rad(event.relative.y * mouse_sensitivity)
|
||||
rot_y = clamp(rot_y, -hPI, hPI)
|
||||
|
||||
transform.basis = Basis()
|
||||
rotate_object_local(Vector3.UP, rot_x)
|
||||
rotate_object_local(Vector3.RIGHT, rot_y)
|
||||
|
||||
|
||||
func get_axis(neg : Array[Key], pos : Array[Key]) -> float:
|
||||
var pressed = func (arr: Array[Key]):
|
||||
var p: float = 0
|
||||
for k in arr:
|
||||
if Input.is_physical_key_pressed(k):
|
||||
p = 1
|
||||
break
|
||||
return p
|
||||
|
||||
return pressed.call(pos) - pressed.call(neg)
|
||||
|
||||
|
||||
func _process(delta) -> void:
|
||||
var motion := Vector2(get_axis([KEY_S], [KEY_W]), get_axis([KEY_A], [KEY_D]))
|
||||
var lift := get_axis([KEY_Q, KEY_CTRL], [KEY_E, KEY_SPACE])
|
||||
var speed := camera_speed_fast if Input.is_physical_key_pressed(KEY_SHIFT) else camera_speed
|
||||
motion = motion.limit_length()
|
||||
|
||||
var b := global_transform.basis
|
||||
var v := (-b.z * motion.x) + (b.x * motion.y) + (b.y * lift)
|
||||
global_position += v.limit_length() * speed * delta
|
||||
Loading…
Add table
Add a link
Reference in a new issue