is_on_floor отрабатывает в 2 из 3 случаев, при движении влево/право?

Есть базовый скрипт для перемещения и прыжка.

extends KinematicBody2D

export (int) var SPEED #400
export (int) var GRAVITY #50
export (int) var JUMP_SPEED #300

var velocity := Vector2.ZERO

onready var animated_sprite := $AnimatedSprite

func _ready():
    pass

func _physics_process(delta):
    applay_gravity()
    jump()
    move()
    velocity = move_and_slide(velocity, Vector2.UP)
    
func move():
    if Input.is_action_pressed("left"):
        velocity.x = -SPEED 
        print(is_on_floor()) #Будет на скрине
    elif Input.is_action_pressed("right"):
        velocity.x = SPEED
        print(is_on_floor())
    else:
        velocity.x = 0

func jump():
    if Input.is_action_just_pressed("jump") and is_on_floor():
        velocity.y = -JUMP_SPEED

func applay_gravity():
    if is_on_floor():
        velocity.y = 0 
    else:
        velocity.y += GRAVITY

Почему то когда персонаж начинает двигаться в лево\право "is_on_floor()" начинает давать ложную информацию.
Приложу скрин что ты лучше понять вопрос и скрин с настройками игрока

введите сюда описание изображения

введите сюда описание изображения


Ответы (0 шт):