feat: setup initial repo and smallest working scene
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
@export var move_speed := 7.0
|
||||
@export var acceleration := 18.0
|
||||
@export var rotation_speed := 12.0
|
||||
@export var camera_rig: Node3D
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
var input := Input.get_vector(
|
||||
"move_left",
|
||||
"move_right",
|
||||
"move_forward",
|
||||
"move_backward"
|
||||
)
|
||||
|
||||
var forward := -camera_rig.global_transform.basis.z
|
||||
var right := camera_rig.global_transform.basis.x
|
||||
|
||||
forward.y = 0
|
||||
right.y = 0
|
||||
|
||||
forward = forward.normalized()
|
||||
right = right.normalized()
|
||||
|
||||
var direction := (right * input.x + forward * -input.y).normalized()
|
||||
|
||||
var target_velocity := direction * move_speed
|
||||
|
||||
velocity.x = move_toward(velocity.x, target_velocity.x, acceleration * delta)
|
||||
velocity.z = move_toward(velocity.z, target_velocity.z, acceleration * delta)
|
||||
velocity.y = 0.0
|
||||
|
||||
move_and_slide()
|
||||
|
||||
if direction.length() > 0.01:
|
||||
var target_angle := atan2(direction.x, direction.z)
|
||||
rotation.y = lerp_angle(rotation.y, target_angle, rotation_speed * delta)
|
||||
Reference in New Issue
Block a user