Hello, I'm a kind-of-beginner to godot 3 (I have some experience) and I have noticed that when I put moveandslide(velocity, FLOOR) (FLOOR is Vector2(0, -1) and velocity is my movement) inside of a kinematicbody2D script, If the player walks against the kinematicbody2D, it will start moving constantly by just a tiny bit, and if the player tries to walk on top of it, after being on the kinematicbody2D for a little bit the object just falls right through! My game pretty much relies walking on kinematicbody2Ds to work, so am I doing something wrong with moveandslide, or is it just a glitch in the engine?

Thanks!

in Engine

Could You parse code sample of how do You handle input and movement ?

yes I can but I don't have access to my PC right now, but I will later today
I'll do it as soon as I can

if Input.isactionpressed("ui_right"):
\$CollisionPolygon2D.scale = Vector2(1, 1)

``````    \$AnimatedSprite.flip_h = false
if on_ground == true:
vel.x = min(vel.x + acc, regSpeed)
\$AnimatedSprite.play(walk)
else:
vel.x = min(vel.x + acc - 3, regSpeed)
\$AnimatedSprite.play(idle)

elif Input.is_action_pressed("ui_left"):
\$CollisionPolygon2D.scale = Vector2(-1, 1)
\$AnimatedSprite.flip_h = true

if on_ground == true:
vel.x = max(vel.x + -acc, -regSpeed)
\$AnimatedSprite.play(walk)
else:
vel.x = max(vel.x + -acc + 3, -regSpeed)
\$AnimatedSprite.play(idle)

else:
vel.x = lerp(vel.x, 0 , 0.2)
\$AnimatedSprite.play(idle)

if on_ground == true:

gravity = 10
idle = "idle"
\$AnimatedSprite.offset = Vector2(0, 0)

#jump code

#regular jump
if Input.is_action_pressed("jump"):
if on_ground == true:
jump()
#if player releases jump key before max jump is reached, start falling
if Input.is_action_just_released("jump"):
jump_cut()

vel.y = min(vel.y + gravity, 350) #makes the player fall with gravity

vel = move_and_slide(vel, FLOOR) #makes the player move with coded physics
``````

and the movement for the non-player kinematicBody2D is:

extends KinematicBody2D
var gravity = 10
var vel = Vector2()
var FLOOR = Vector2(0, -1)

func physicsprocess(delta):
vel = moveandslide(vel, FLOOR)
vel.y += gravity