extends KinematicBody2D var velocity = Vector2(0, 0) var snap = Vector2.ZERO var last_time_on_floor : int = 0 func _ready(): _enable_snap() func _process_gravity(delta): if not is_on_floor(): if last_time_on_floor == 0: last_time_on_floor = OS.get_ticks_msec() velocity.y += GlobalConfig.GRAVITY.y * delta else: last_time_on_floor = 0 _enable_snap() velocity.y = 0 if is_on_ceiling(): velocity.y = 1 func _physics_process(delta): move_and_slide_with_snap(velocity, snap, Vector2.UP) _process_gravity(delta) func _disable_snap(): snap = Vector2.ZERO func _enable_snap(): snap = GlobalConfig.SNAP func _check_jump(): print(OS.get_ticks_msec() - last_time_on_floor) if last_time_on_floor == 0: return true return OS.get_ticks_msec() - last_time_on_floor <= GlobalConfig.JUMP_COYOTE