#velocity.y not being applied

1 messages · Page 1 of 1 (latest)

tame zinc
#
# 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