2016-12-28 3 views
4

Je tripotais Godot-Engine et j'ai essayé un petit jeu.La collision du moteur Godot avec KinematicBody ne fonctionne pas

Mais je n'arrive pas à obtenir une information sur la collision.

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

Il imprime toujours faux. Je déplace mon personnage (KinematicBody2d ->Sprite/CollisionShape2d) avec la commande set_pos.

Répondre

2

Pour la cinématique, vous devez utiliser move ou move_to pour déclencher la collision. Si vous avez vraiment besoin d'utiliser set_pos, vérifiez collisionshape2d.shape et effectuez la vérification de collision vous-même.

Il est un exemple sur la documentation Godot où le mouvement KinematicBody2D et de manutention collisiong est introduit: http://docs.godotengine.org/en/stable/tutorials/2d/kinematic_character_2d.html

Définition complète pour la classe KinematicBody2D est également disponible à Godot Documentation: http://docs.godotengine.org/en/stable/classes/class_kinematicbody2d.html?highlight=KinematicBody2D

+0

Ok. Merci ;-) – Linuxer4Fun

+0

J'ai utilisé set_pos pour faire fonctionner le Blaster dans 360 Directions. Mais comment puis-je y parvenir avec move()? – Linuxer4Fun

+0

@ Linuxer4Fun Vous devez accepter la réponse et poser une autre question. Ne posez pas de questions différentes dans les commentaires. – sm4