# Wall Jump
var _last_wall_norm
func enter() -> void:
_last_wall_norm = parent.wall_normal
animation_name = "jump"
parent.apply_wall_jump()
parent.jump_modifier = parent.DEFAULT_MODIFIER
parent.in_jump_buffer = false
parent.jump_count = 0
super()
func process_physics(delta: float) -> State:
parent.velocity.y += parent.jump_gravity
if parent.velocity.y > 0.0:
return fall_state
return null
#Parent Apply Wall Jump
func apply_wall_jump() -> void:
velocity.y = jump_velocity * jump_modifier
velocity.x = WALL_PUSH_POWER
move_and_slide()
#Parent variables
@onready var jump_velocity: float = ((2.0 * JUMP_HEIGHT) / JUMP_TIME_TO_PEAK) * -1.0
@onready var jump_gravity: float = ((-2.0 * JUMP_HEIGHT) / pow(JUMP_TIME_TO_PEAK,2)) * -1.0
@onready var fall_gravity: float = ((-2.0 * JUMP_HEIGHT) / pow(JUMP_TIME_TO_DESCENT,2)) * -1.0
# Use to reset modifiers to 1.0
const DEFAULT_MODIFIER: float = 1.0
# Jump Const
const JUMP_HEIGHT: float = 500.0
const JUMP_TIME_TO_PEAK: float = 0.75
const JUMP_TIME_TO_DESCENT: float = 0.415
const JUMP_BUFFER_TIME: float =0.2
const COYOTE_TIME: float = 0.2
const WALL_PUSH_POWER: float = 500.0
const MAX_JUMP_COUNT: int = 2
#velocity.y not being applied
1 messages · Page 1 of 1 (latest)