Godot engine collision with KinematicBody doesn't work

4.7k views Asked by At

I was fiddling around with the Godot engine and tried a little game.

But I can't seem to get an info on colliding.

if is_colliding():
    print ("Collision with " + get_collider())
    get_node("Sprite").set_texture(walk_cycle_right_1)
    move_state_right = 1
    set_pos(Vector2(get_pos().x -10, get_pos().y))

It always prints false. I'm moving my character (KinematicBody2d -> Sprite/CollisionShape2d) with the set_pos command.

1

There are 1 answers

4
nicruo On BEST ANSWER

For the kinematicbody you need to use move or move_to to trigger the collision. If you really need to use set_pos, check collisionshape2d.shape and do the collision check yourself.

There is an example on Godot documentation where KinematicBody2D movement and collisiong handling is introduced: http://docs.godotengine.org/en/stable/tutorials/2d/kinematic_character_2d.html

Full definition for KinematicBody2D class is available also at Godot Documentation: http://docs.godotengine.org/en/stable/classes/class_kinematicbody2d.html?highlight=KinematicBody2D