31 lines
1004 B
GDScript
31 lines
1004 B
GDScript
extends PlayerState
|
|
class_name PlayerWallRunning
|
|
|
|
func Physics_Update(delta):
|
|
if character.is_on_floor():
|
|
Transitioned.emit(self,"on foot")
|
|
else:
|
|
wall_run_movement(delta)
|
|
|
|
|
|
if Input.is_action_just_pressed("jump"):
|
|
wall_jump()
|
|
wall_run_gravity(delta)
|
|
enable_wall_rays()
|
|
if !can_wall_run():
|
|
Transitioned.emit(self,"in air")
|
|
|
|
func wall_jump():
|
|
character.velocity += (Vector3(0,1,0) + character.wall_run_direction).normalized() * 15 * character.speed_modifiers()
|
|
Transitioned.emit(self,"in air")
|
|
|
|
func wall_run_movement(delta):
|
|
if Input.is_action_pressed("move_up"):
|
|
character.velocity.x = lerp(character.velocity.x,character.wall_run_direction.x * move_speed * character.speed_modifiers(),delta * move_transition_speed)
|
|
character.velocity.z = lerp(character.velocity.z,character.wall_run_direction.z * move_speed * character.speed_modifiers(),delta * move_transition_speed)
|
|
else:
|
|
Transitioned.emit(self,"in air")
|
|
|
|
func wall_run_gravity(delta):
|
|
character.velocity.y -= 9.8 * delta
|