Files
fps_project_1/scripts/PlayerStates.gd
2025-06-16 15:10:44 -05:00

50 lines
1.7 KiB
GDScript

extends State
class_name PlayerState
@export var move_speed: float = 12
@export var move_transition_speed : float = 7
@onready var character = get_parent().character
var move_target
var look_target
func standard_movement(delta):
character.velocity.x = lerp(character.velocity.x, character.movement_input().x * move_speed,delta * move_transition_speed)
character.velocity.z = lerp(character.velocity.z, character.movement_input().z * move_speed,delta * move_transition_speed)
func apply_gravity(delta):
character.velocity.y -= 9.8 * 1.25 * delta
func enable_wall_rays():
if Input.is_action_pressed("move_left"):
character.wall_ray_1.enabled = true
else:
character.wall_ray_1.enabled = false
if Input.is_action_pressed("move_right"):
character.wall_ray_2.enabled = true
else:
character.wall_ray_2.enabled = false
func can_wall_run():
if character.wall_ray_1.is_colliding() or character.wall_ray_2.is_colliding() or character.wall_ray_3.is_colliding():
return true
func start_wall_running():
var running_surface_normal
var wall_run_direction
if character.wall_ray_1.is_colliding():
running_surface_normal = character.wall_ray_1.get_collision_normal()
wall_run_direction = running_surface_normal.rotated(Vector3(0,1,0), deg_to_rad(90))
elif character.wall_ray_2.is_colliding():
running_surface_normal = character.wall_ray_2.get_collision_normal()
wall_run_direction = running_surface_normal.rotated(Vector3(0,-1,0), deg_to_rad(90))
print("SURFACE NORMAL : ", running_surface_normal)
if running_surface_normal:
character.wall_run_direction = wall_run_direction
character.wall_run_surface_normal = running_surface_normal
Transitioned.emit(self,"wall running")