La Place des Développeurs détection collision sprites
Hello Les Msxiens,
Après une longue absence, je me remets tranquillement au code MSX, mais je n'arrive plus à me souvenir des principes de détections de collisions de sprites. Je sais, j'ai regardé sur d'ancien programmes, mais je nage quand même -_-
Est ce que quelqu'un pourrait me ré expliquer ces principes ?
Genre j'ai un sprite player (en forme de rectangle) qui fait, par exemple 50x10 pixels. Il est sur des coordonnées centrales et se déplace par des évènements clavier (flèches de direction <- -> et celle pour monter qui est le saut du rectangle). Sa direction principale est d'aller vers l'avant de gauche à droite.
Il y a un sprite ennemi (en forme de carré) qui fait 20x20 pixels. Sa position en abscisse est la même que celle du player et sont déplacement est de droite vers la gauche.
L'idée est que le player puisse éviter l'ennemi par un saut. Ce qui implique que le sprite ennemi continue sont parcours vers la gauche, etc... ==> donc pas de collision.
Si les 2 sprites se rencontrent frontalement, il doit y avoir collision.
Est ce que quelqu'un pourrait me redonner les bases pour les détections et collisions ? Je me mélange trop les pinceaux avec le if, les and et or dans le genre.
Un exemple simple de code, etc...
Par avance merci
Absolu.
Après une longue absence, je me remets tranquillement au code MSX, mais je n'arrive plus à me souvenir des principes de détections de collisions de sprites. Je sais, j'ai regardé sur d'ancien programmes, mais je nage quand même -_-
Est ce que quelqu'un pourrait me ré expliquer ces principes ?
Genre j'ai un sprite player (en forme de rectangle) qui fait, par exemple 50x10 pixels. Il est sur des coordonnées centrales et se déplace par des évènements clavier (flèches de direction <- -> et celle pour monter qui est le saut du rectangle). Sa direction principale est d'aller vers l'avant de gauche à droite.
Il y a un sprite ennemi (en forme de carré) qui fait 20x20 pixels. Sa position en abscisse est la même que celle du player et sont déplacement est de droite vers la gauche.
L'idée est que le player puisse éviter l'ennemi par un saut. Ce qui implique que le sprite ennemi continue sont parcours vers la gauche, etc... ==> donc pas de collision.
Si les 2 sprites se rencontrent frontalement, il doit y avoir collision.
Est ce que quelqu'un pourrait me redonner les bases pour les détections et collisions ? Je me mélange trop les pinceaux avec le if, les and et or dans le genre.
Un exemple simple de code, etc...
Par avance merci
Absolu.
MSXlegend
Membre non connecté
Conseiller Municipal
hello absolu,
Vu la taille de sprites que tu donnes on dirait plutôt des "COPY" non?
Sinon, comme l'a dit Legend, dans ton programme:
100 ON SPRITE GOSUB 10000
...
dans ta boucle
1000 SPRITE ON
...
Dans ton sous programme:
10000 SPRITE OFF
puis tests...et RETURN
Vu la taille de sprites que tu donnes on dirait plutôt des "COPY" non?
Sinon, comme l'a dit Legend, dans ton programme:
100 ON SPRITE GOSUB 10000
...
dans ta boucle
1000 SPRITE ON
...
Dans ton sous programme:
10000 SPRITE OFF
puis tests...et RETURN
Le MSXien le plus à l'ouest ... ou presque
si ton sprite est bien un copy il faut comparer les coordonées des 2 copy
du genre IF X=XX AND Y=YY THEN GOTO xxxx
mais il faut tenir compte de la taille donc faire des comparaisons du genre
iF (X > XX-5 AND X< XX+5) AND (Y>YY-5 AND Y<YY+5) THEN GOTO xxxx
en jouant sur les valeurs 5 tu peux regler le moment des collisions
du genre IF X=XX AND Y=YY THEN GOTO xxxx
mais il faut tenir compte de la taille donc faire des comparaisons du genre
iF (X > XX-5 AND X< XX+5) AND (Y>YY-5 AND Y<YY+5) THEN GOTO xxxx
en jouant sur les valeurs 5 tu peux regler le moment des collisions
Ok, merki !
Je vais essayer les principes que vous m'avez donné
Je pense que ça devrait fonctionner.
L'idée étant de mettre en collision les centres de chaque sprite, si je me souviens bien (enfin pour une base de départ ) ??
Je vais tester.
Je vais essayer les principes que vous m'avez donné
Je pense que ça devrait fonctionner.
L'idée étant de mettre en collision les centres de chaque sprite, si je me souviens bien (enfin pour une base de départ ) ??
Je vais tester.
MSXlegend
Membre non connecté
Conseiller Municipal
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie