COLLISION DIRECTX, TUTO TILES 5

diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007 - 20 févr. 2006 à 00:53
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 - 16 mars 2006 à 22:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36141-collision-directx-tuto-tiles-5

ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
16 mars 2006 à 22:50
Le tuto sur les supermap est prés, je commente et le poste, bonne lecture, le prochain sera sur le drag n drop...
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
22 févr. 2006 à 17:53
Pour Kazuya :

Non c'est pas forcement beaucoup plus long...

Private Declare Function IntersectRect Lib "user32" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long

Public Function Zone_Collision(ByRef Zone1 As RECT, ByRef Zone2 As RECT) As Boolean
Dim tmpRECT As RECT
If IntersectRect(tmpRECT, Zone1, Zone2) <> 0 Then
Zone_Collision = True
Else
Zone_Collision = False
End If
End Function
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
21 févr. 2006 à 20:46
Oui, ce code est connu sous le nom de perfect collision, mais dans le cas d'utilisation de tile je trouve qu'il n'est pas trop adapté... Aprés a vous de choisir...
K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016
21 févr. 2006 à 19:26
Lol, ils ont inventés une API pour gérer les collisions entre 2 RECT. C'est ridicule, le code prends une ligne, tiends, preuve sous tes yeux

Function Collision(Surface1 As RECT, Surface2 As RECT) As Boolean
If Surface1.Top <= Surface2.Bottom And Surface1.Bottom >= Surface2.Top And Surface1.Left <= Surface2.Right And Surface1.Right >= Surface2.Left Then Collision = True
End Function
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
21 févr. 2006 à 17:33
Oui c'est pas mal mais personnellement je prefere l'utilisation de l'API IntersectRect qui permet de savoir si deux zones (RECT) se touchent ou non.
Apres c'est une question de gout.
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 21:08
Voila, j'ai posté l'editeur...
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 13:49
Oooo okkkk, facile il faut un petit tableau, j'accepte ce tuto.
Je le fais quand ? en 6, 7, 8 ou 9 ?
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 13:25
DirectX ayant pour but de communiquer avec la carte graphique directement pour nous permettres de faire de puissant interface graphique. Il se retrouve très souvent utilisé pour des jeux, mais évidemment, selon le type de jeu, certain on besoin d'un espace de rangement ou l'on place les objets que l'on recolte. Mais une clef prends moin de place qu'une armure, donc ici l'armure pourrais prendre disons 4 case, tandis que la clef une. Mais nous voulons peut être nous débarasser d'un item ou placé le tout autrement pour avoir un peu plus de place pour un objet. Donc il faudrais qu'on puisse déplacé (en ce moment c la souris sinon sa irait mal) l'item en cliquant avec la souris pour le prendre, et en relâchant la souris on dépose. Mais on doit pouvoir détecter la présence d'une case libre, ou alors une case non disponibles, parmis l'ensemble des cases que notre objet à besoin. C'est le principe que l'on retrouve dans Diablo 2, World of warcraft et probablement d'autre (je ne connais que c'est 2 là)
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 09:59
Oui j'ai oublié une ligne je corrige cela dessuite....
Pour le drag n drop si tu es plus explicite je regarderais comment faire....
Fais moi une belle description..
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 02:11
j'aimerais te faire remarquer qu'il te manque une ligne dans le tuto :
ReDim Collision(UBound(Map,1),UBound(Map,2))
Elle se situe juste avant la ligne 49
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 01:54
Comment ose tu dire qu'il ne manquera pas de tuto par après? Moi j'en voit un beau! Comment géré un drag N Drop en directX (Tu connais sans doute diablo 2, le style d'inventory qu'il possède pourrais être très intéressant non?) Mais j'ai une bonne idée de comment tu va le géré : une matrice! je te remercie, tu ma faite découvrir cette chose qui semble être bien pratique
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:42
Ok.
Je m'occupe de l'editeur de MAP héhé
et ensuite je fais les tuto suivants...
D'ailleur ensuite je ne vois pas quel tuto il manquera ensuite...

Si une idée vous avez n'hésitez pas.
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 01:38
Ah bon, sa doit être mes pilotes de souris qui cause un conflit quelque part alors. Ce n'est pas plus grave que sa, j'ai pas besoin de ma souris pour ce que je veux faire
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:35
Je viens de verifier, chez moi le bug n'apparait pas... C'est bizarre.
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:33
Lol merci. Dans l'ancienne version tu pouvais meme creer automatiquement des tiles a partir de carte de jeu, donc tu prennais des vieux jeux style zelda et ça creer entierement la map en supprimant les images en doubles. Il ne rester plus qu'a sauver et à faire les collisions.
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 01:33
je n'ai fait aucune référence à la souris. Et j'ai remarqué que le bug apparaisait également dans tes tutoriels (du moins, le 1 et le 2 dont je suis sur)
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 01:31
j'crois que je vais attendre assez fiévreusement la version finale parce que sa s'annonce plutôt prometteur
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:30
Dans ton jeu si tu charges la souris et que tu l'utilise ou que tu l'appel verifie que tu as pas un End.

Autrement tu peux eventuellement bloquer le clique mais je sais pas comment, autrement me faudrais voir ton code...
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:27
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 01:27
j'aurais une question dont je ne crois pas que tu ai précisé dans les autres tutoriels. Lorsque je clique quelque part dans mon jeu (n'importe où), ce dernier se ferme, cependant j'ignore comment réglé sa. Tu aurais solution?
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:23
Alors en faite tu charges ton repertoire d'image (tile) et ensuite tu selectionnes l'image que tu souhaite tu la pose sur ta carte ainsi dessuite.
Ensuite tu passes en mode collision et tu cré les endroits ou le perso peu passer ou pas.

Enfin tu peux sauvegarder la map et la collision.

Mais j'ai encore deux ou trois bug a réglé avant de publier.
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 01:19
le terme que tu utilise m'embrouille ... "l'éditeur de tile" sous-entends qu'il édite les tiles ou les maps? parce que je ne dirais pas non sur un pour créé une map car j'ai rapidement constaté que le nombre de tiles devient rapidement astronomique :| et sa me décourage pour ce qui est de créé une map :(
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:11
L'editeur de tile est fait a 99% j'ai une juste un bug sur le choix de la taille de la map et le probleme est regle, pour l'instant seul les map (pas les supermap) sont géré et aussi il n'y a que les evenement de collision bloc et passe mais une fois tout en place c'est rapide a ajouté....
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 01:08
j'aimerais bien le tuto7 et 8, le 6 je ne crois pas l'utilisé dans mon jeu (je suis un peu dans la brume sur comment j'vais afficher ma map ... mais c'est un détail) mais peut etre que sa peut interessé quelqu'un. Puis l'editeur de map et de collision sa serait bien pratiquer s'il pouvait généré les 2 (je sais pas si tu en est capable, probablement que oui, mais que l'on puisse associer un certain tiles a un type de collision (l'utilisateur l'Associe)) Cela accélerait de beaucoup le dévelloppement de map. Mais bon, une idée comme une autre, libre a toi de la prendre
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
20 févr. 2006 à 01:00
Pour le petit bug ben merci de l'avoir remarqué, donc pour les prochains commentaires penser qu'il a deja était noté.

Ensuite pour la difference avec cache et sans cache :
Quand tu passe sous un arbre ton perso et caché par l'arbre quand tu est bloqué par un mur ton perso et dessus le mur, en faite c'est simplement si le personnage est caché ou pas.

Enfin si il y a deux chiffre c'est tout simplement pour permettre au programme de créer 100 types de collisions differentes, j'aurais trés bien pu dire que 10 types suffit et dans ce cas la on aurait choisi un chiffre pour chaque tile.

C'est plus clair ?

Est ce que je continue ma série de tuto ou est ce que j'arrete ?
diiplayer Messages postés 64 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 24 octobre 2007
20 févr. 2006 à 00:53
-J'ai remarqué un petit bug, tu a mal placé une de tes collisions dans le fichier.col (tu passe au travers de la derniere bibliothèque en haut a droite).
-Il serait sympathique de préciser quel est la différence des collisions avec cache et sans cache.
-Puis pour terminer, Il chaque tiles est équivalent a une série de 2 chiffre (soit 00 ou 01) et je me demandais quel en était la raison.
Évidemment, je te remercie pour ce court mais tout de même pratique tuto car ma méthode était ... vraiment pas efficace :)
Rejoignez-nous