Auteur Sujet: Système de collision  (Lu 1778 fois)

Hors ligne rams33

  • Néophyte
  • *
  • Messages: 3
  • Karma: +0/-0
Système de collision
« le: 10 octobre 2014 à 11:40:54 »
Bonjour , je détère un peu ce plugin en espérant avoir une réponse.
Tout d'abord bravo pour le développement qui est bien conçu, je l'ai tout de même adapté pour ma propre utilisation qui est le multi avatar donc jusqu’à là tout va bien.

Le soucis est que je veux détecter si le pathfinding rentre en contact avec un avatar, à l'inverse d'un bâtiment je veux pas l'éviter mais bien le détecter

Je me suis penché sur le soucis en créant un troisième état de changeState (1 = accessible, 2 = non-accessible, 3 = collision) mais je me perd dans la fonction astar qui gère le pathfinding et n'arrive à aucun résultat.

Avez vous une solution à me proposer ? Merci d'avance

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Système de collision
« Réponse #1 le: 10 octobre 2014 à 11:46:39 »
Ouch !
Ça ne va pas être simple à faire ça :D

2 solutions (au moins) :
 - modifier la fonction "astar" pour y intégrer une vérification : est-ce que la case en cours contient ou non un avatar ?
 - faire la vérification après coup avec ce que renvoie astar.
Pour la première solution, il faudrait que astar ait accès aux coordonnées des avatars... Pas simple à mon avis.
Pour la seconde solution, ce devrait être plus simple. En vérifiant ce que retourne astar et en modifiant en conséquence.
Tu devrais peut-être te diriger vers cette solution. Autre avantage : tu rajoutes une simple fonction qui va modifier le chemin retourné par astar. Tu n'auras pas à tout refaire si il y a une mise à jour.

Hors ligne rams33

  • Néophyte
  • *
  • Messages: 3
  • Karma: +0/-0
Re : Système de collision
« Réponse #2 le: 10 octobre 2014 à 12:12:24 »
Merci de ta réactivité,
Oui mais ça va le faire  8)

Justement j'ai pensé aussi à modifier ce que retourne astar mais j'ai du mal à visualiser comment procéder pour lui dire voilà cette case vaut 3 ça veut dire collision.

Pour le moment c'est ta fonction areNodesEqual() qui gère si y peut accéder ou pas y faut donc que je créé une fonction similaire mais qui détecte si la case vaut 3 ?

Ça peut être un début de solution ..

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Système de collision
« Réponse #3 le: 10 octobre 2014 à 12:53:06 »
Oui, tu peux aussi faire comme ça. En modifiant areNodesEqual. Pourquoi pas :)

Hors ligne rams33

  • Néophyte
  • *
  • Messages: 3
  • Karma: +0/-0
Re : Système de collision
« Réponse #4 le: 10 octobre 2014 à 15:12:51 »
Alors j'ai pas mal avancé donc je suis partis sur un troisième état pour changeState() cette état est géré comme un bâtiment car je veux pas qu'on passe à travers l'avatar. Mais à la sortie de la fonction astar je contrôle la valeur de la case pour savoir si on est sur un bâtiment ou un avatar donc OK.

Je me demandais qu'elle est la fonction qui est appelé quand je clique sur la carte pour bouger un personnage ? Car pour l'instant vu comme il est géré comme un bâtiment je peux pas allez dessus.

L'idée serait que je puisse cliquer sur l'avatar et qu'un second avatar vienne se positionner à une case du premier avatar

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Système de collision
« Réponse #5 le: 10 octobre 2014 à 16:33:12 »
Si mes souvenirs sont bons, c'est "moveAvatar" qui est appelé lorsque l'on bouge l'avatar. En fait, lorsque l'on clic sur la carte. Après, il faut définir s'il se trouve quelque case ou pas à l'endroit du clic.