CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Tile Based Game gestion collisions

Zooska
Zooska
Niveau 4
29 juin 2005 à 21:47:34

:salut: J´ai commencé le Tile Based Game hier en vu de faire un jeu prochainement. Pour ce qui est de la création de la map, je comprend tout et très bien. Le problème arrive lorsque je veux intégrer un personnage et d´en gérer les collisions, je suis le tuto de ce très bon site : http://oos.moxiecode.com/tut_02/index.html mais je ne comprend pas grand chose dans cette partie :
( le code est en Flash)

/ / where are our edges?
var downY = Math.floor((_y+(_height/2))/_parent.tileH);
var upY = Math.floor((_y-(_height/2))/_parent.tileH);
var leftX = Math.floor((_x-(_width/2))/_parent.tileW);
var rightX = Math.floor((_x+(_width/2))/_parent.tileW);
var centerX = Math.floor(_x/_parent.tileW);
var centerY = Math.floor(_y/_parent.tileH);
// move got dammit... and check for collisions.
if ( dir == " up" && _parent.myMap[upY][centerX] ! = 1) {
_y -= speed;
}
if ( dir == " down" && _parent.myMap[downY][centerX] ! = 1) {
_y += speed;
}
if ( dir == " left" && _parent.myMap[centerY][leftX] ! = 1) {
_x -= speed;
}
if ( dir == " right" && _parent.myMap[centerY][rightX] ! = 1) {
_x += speed;
}

si je copie//colle le code, sa marche bien ( malgré qu´on peut passer " à moitié" sur les tiles noirs...) mais je comprend pas comment il s´y est pris et il ne l´explique pas beacoup je trouve... Alors j´aimerais bien que vous puissiez m´éclairer pour que je puisse continuer. Merci bien ! !

P.S. Même si vous ne coder pas en Flash, c´est pas le code comme tel que je ne comprend pas, mais la manière dont il faut si prendre pour gérer les collisions ; j´imagine que c´est à peu près pareil dans tout les languages...

Zooska

[R]Viper
[R]Viper
Niveau 10
29 juin 2005 à 21:55:51

Bah une collision se fait comme suis.

Si a touche b

arrêter de faire bouger objet A.

Je sais pas si c´est vraiment la réponse que tu voulais.

Musashi001
Musashi001
Niveau 10
29 juin 2005 à 21:59:11

Bon j´avoue, j´ai pas tout lu, mais dans ton cas, je te recommende ce site:
http://www.tonypa.pri.ee/tbw/start.html

Il est en anglais, mais il parle exactement ce dont tu traites et il est très intéréssant et très complet. C´est dailleurs le premier site a appraraitre sur gogle avec les mots clef " tile based game " .

Zooska
Zooska
Niveau 4
29 juin 2005 à 22:13:21

Musashi001 :d) je connais ce site mais dans un vieux post, luxregina avait dit a fil_razorback de prendre le lien que j´ai cité plus haut parce que c´était plus orienté " débutant" et j´avoue que sur le site que tu vien de donner ( mais que j´avais deja été y faire un tour) je comprend encore moins...

fil_razorback
fil_razorback
Niveau 10
29 juin 2005 à 22:34:46

Ben j´ai codé moi meme mes collisions après avoir appris les bases de l´actionScript et des Tile Based World sur ce site donc je peux pas t´expliquer ce morceau la à priori :(

Musashi001
Musashi001
Niveau 10
29 juin 2005 à 23:25:23

Bon, je t´explique le principe alors:

Tout d´abord, tu donne à chacunes de tes tiles un chiffre qui déterminera si le héros peut marcher dessus ou non.(ici quand la tile est à 0 on peut marcher, quand elle est à 1 on ne peut pas )

Ensuite, tu fais une boucle sans fin dans laquelle on attend que le joueur appuie sur une touche.

Quand le joueur appuie sur la touche haut, on regarde si la tile d´arrivée ( donc la tile du haut ici ) est ´passable´ ( donc on vérifie son ´chiffre´ )

Si la tile est différente de 1, alors on fait marcher vers le haut le perso, sinon on fait rien.

dynoplasmma
dynoplasmma
Niveau 9
29 juin 2005 à 23:31:09

http://rafb.net/paste/results/jSNPhP72.html
C´est de la SDL mais j´ai mit version texte en plus, j´ai a peine lu le premier poste, donc je sais pas trop c´est quoi ton probleme, mais regarde quand meme.
Dsl si je suis [HS].

Musashi001
Musashi001
Niveau 10
29 juin 2005 à 23:35:07

SDL sous Flash :sarcastic:
Y a peut être encore le résonnement, mais je suis pas convaincu.

dynoplasmma
dynoplasmma
Niveau 9
29 juin 2005 à 23:36:25

Non, c´etait juste pour lui montrer le raisonnement, c´est pour ca que j´ai mit le texte en dessous.
Mais SDL en flash, ca n´existe pas.

Zooska
Zooska
Niveau 4
30 juin 2005 à 04:36:28

Bon ! finalement, après des heures et des heures, j´ai enfin compris le principe ( y´était temps :lol: ), plus quelques autres heures pour le mettre en pratique... sauf qu´à présent, si, par exemple, je fonce dans un mur sur la droite, naturellement je ne peux plus avancer vers la droite..., mais je ne peu plus descendre, ni monter : il faut que je fasse un mouvement vers la gauche, comme si j´était enfoncé dans le mur... j´aimerais juste savoir comment éviter sa.

J´ai essayer de faire en sorte que si notre position X + un certain nombre ( disons... 5) et que le résultat égalait la position X d´une tile dont le chiffre serait 1 ( impassable), on ne puisse pas avancer, mais sa me fais le même probléme en fait...

Merci d´avance ! !!

JeanYvesYves
JeanYvesYves
Niveau 10
30 juin 2005 à 09:48:09

J´ai un exemple de fichier ou on se promene dans un tilemap. Sur mon site, mon tuto, " § 2.A.2. Promenade"
Il est accompagné d´un fichier texte explicatif. Dans mon cas, le gars marche correctement, ne va pas " a moitié" dans les tiles interdits, et ne se colle pas, bref, y´a l´exe avec, essaie...

Musashi001
Musashi001
Niveau 10
30 juin 2005 à 15:06:10

JeanYvesYves: " Dans mon cas, le gars marche correctement"

Lol je vois que tu te souviens de mon cas, avec mon perso qui bloquait :) Mais maintenant ça marche niquel, j´en suis au scrolling. p)

Zooska

Pour éviter que ton perso " ne rentre" dans la tile quand le perso arrive dans un endroit ou il ne peut pas bouger, tu dois remettre le perso en place juste à la limite de la tile.

De cette façon, le perso pourra bouger de tous les côtés sauf celui vers le mur.

JeanYvesYves
JeanYvesYves
Niveau 10
30 juin 2005 à 15:10:00

Musashi001 > pas forcément de ton cas a toi, de cas de beaucoup de monde avec qui j´ai pu parler, et également plusieurs fois mon cas dans le passé :) j´ai essayé plusieurs fois de faire des collisions propres avec les murs, je me suis pas mal planté :)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment