Столкновение двигателя Godot с KinematicBody не работает

Я возился с движком Godot и попробовал небольшую игру.

Но я не могу получить информацию о столкновении.

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))

Он всегда печатает false. Я перемещаю своего персонажа (KinematicBody2d -> Sprite/CollisionShape2d) с помощью команды set_pos.


person Linuxer4Fun    schedule 28.12.2016    source источник


Ответы (1)


Для кинематического тела вам нужно использовать move или move_to, чтобы вызвать столкновение. Если вам действительно нужно использовать set_pos, проверьте collisionshape2d.shape и самостоятельно проверьте коллизии.

В документации Godot есть пример, где представлена ​​обработка движения и столкновений KinematicBody2D: http://docs.godotengine.org/en/stable/tutorials/2d/kinematic_character_2d.html

Полное определение класса KinematicBody2D также доступно в документации Godot: http://docs.godotengine.org/en/stable/classes/class_kinematicbody2d.html?highlight=KinematicBody2D

person nicruo    schedule 04.01.2017
comment
Ok. Спасибо ;-) - person Linuxer4Fun; 06.01.2017
comment
Я использовал set_pos, чтобы заставить Blaster двигаться в 360 Directions. Но как я могу добиться этого с помощью move ()? - person Linuxer4Fun; 06.01.2017
comment
@ Linuxer4Fun Вы должны принять ответ и задать другой вопрос. Не задавайте в комментариях разные вопросы. - person MartinTeeVarga; 19.01.2017
comment
@ sm4 ок. Извините. - person Linuxer4Fun; 19.01.2017