pourquoi on ne peu pas lire les pixels ?
et la le mec il le pécho par le bras et il lui dit '
FRONT Le 11/04/2012 à 17:31 Salut robinHood
désolé , j' ai pas la réponse ... I am a poor Newbie
Mais c'est bien que CeL commence a ouvrir des sujets tel que les collisions et autres
perso, je cherche a me cultiver
On veut des TUTOS dédiés NEO-GEO bien sur !!
bye
Fred
Si tu veux des collisions pixel-perfect, tu peux utiliser des masques binaires (1 bit par pixel du sprite, qui vaut 1 si le pixel est opaque et 0 sinon). Du coup avec un simple AND tu peux vérifier la collision de 32 pixels d'un coup. Si tu veux que ce soit vraiment rapide, tu peux aussi précalculer les versions décalées horizontalement de 1, 2, 3... pixels de ton sprite, au lieu de le faire à la volée.

—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT Turboje veut bien, mais les sprites eux même sont bien qq part en mémoire, pas moyen d'aller les lires ? (même si ca doit être la merde j'ai vu que c'est seulement du 16px de large ^^)
et la le mec il le pécho par le bras et il lui dit '
Ils sont seulement dans la cartouche, seul le gpu y a accès, pas le cpu donc pas de moyen de lire si un pixel est transparent ou non.

Je fais des trucs. Des fois ça marche, des fois ça marche pas.
FRONT Le 20/06/2014 à 15:01 salut
j' ai retouvé le site de tutos qui traitait de la gestion des Collisons ...
et dont la technique de :
2.3. Collision Rectangle-Rectangle
avec le code identque a celui de CeL qui l' a simplement adapté au SDK NeoDev ... bon boulot Yannick
'Il se peut que notre programme ait besoin d'une gestion de collision entre deux rectangles. Dans notre cas, nous aurons besoin de ce type de collision pour gérer la collision entre les balles et la raquette du jeu.
Collisions entre deux rectangles
Sélectionnez
//Fonctions qui gerent les collisions
bool Physique::collisionRect(double x1, double y1, double w1, double h1,double x2, double y2, double w2, double h2)
{
if(x1+w1<x2) return false;
if(x2+w2<x1) return false;
if(y1+h1<y2) return false;
if(y2+h2<y1) return false;
return true;
}
Comme vous le voyez, ce n'est pas très compliqué. La question est de savoir si le rectangle (x1,y1,w1,h1) est en collision avec (x2,y2,w2,h2).
On commence par regarder si l'abscisse x2 est à gauche de x1+w1. Si c'est le cas, il peut y avoir une intersection si x1 n'est pas à droite de x2+w2. En effet, cela voudrait dire que soit x2 appartient à l'intervalle [x1, x1+w1], soit x1 appartient à l'intervalle [x2,x2+w2]. Dans ce cas, on regarde si y1 est inclu dans [y2, y2+h2] ou si y2 est inclu dans [y1, y1+h1].
En faisant un dessin, je pense que vous arriveriez à voir tous les cas possibles et voir que nous les gérons tous... Ce type de collision sera utilisé par la collision entre une balle et une raquette.
BEY Le 20/06/2014 à 15:31 I've used this solution for IOCEROSOCCER with good results:
bool spritecollidePixel(bool screen,s8 sprite1,s8 w1,s8 h1,s8 sprite2,s8 w2,s8 h2){
//grab sprite demensions (center positions and length and width)
s16 x1=PA_GetSpriteX(screen,sprite1)+(PA_GetSpriteLx(screen, sprite1)>>1);
s16 y1=PA_GetSpriteY(screen,sprite1)+(PA_GetSpriteLy(screen, sprite1)>>1);
s16 x2=PA_GetSpriteX(screen,sprite2)+(PA_GetSpriteLx(screen, sprite2)>>1);
s16 y2=PA_GetSpriteY(screen,sprite2)+(PA_GetSpriteLy(screen, sprite2)>>1);
return (((x2 >= x1 - ((w1 - -w2)>>1)) && (x2 <= x1 - -((w1 - -w2)>>1)) && (y2 >= y1 - ((h1 - -h2)>>1)) && (y2 <= y1 - -((h1 - -h2)>>1))));
}