Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Moteurs de jeux vidéo > XNA
XNA Forum d'entraide sur le développement avec XNA
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/04/2012, 11h07   #1
arklif
Invité de passage
 
WebDesigner/Développeur multimedia
Inscription : novembre 2011
Messages : 1
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : WebDesigner/Développeur multimedia

Informations forums :
Inscription : novembre 2011
Messages : 1
Points : 3
Points : 3
Par défaut Détection de collisions et rebonds

Bonjour à vous,
je suis débutant en c# et XNA.

mon premier projet est 2 sprites qui rebondisses partout à l’écran
jusque la facile (enfin pas si facile quand on début )

j'ai réussi à faire mes collisions sur les bords d’écran.
il détecte aussi quand les 2 sprites se percute. mais c'est la ou ça pêche... (avec un rectangle et intersects() )

J'ai besoin de savoir de quel coté le sprite est touché pour le faire partir dans l'autre sens (sans pour autant inversé X & Y)

une idée ?
arklif est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/04/2012, 13h08   #2
talizorah
Invité régulier
 
Femme Tali Zorah
Développeur Web
Inscription : avril 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Femme Tali Zorah
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2012
Messages : 3
Points : 5
Points : 5
Même souci
je veux faire reculer mon sprite dans la direction opposé d’où il a été percuté.
Je n'ai pas trouvé encore...

talizorah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2012, 18h33   #3
talizorah
Invité régulier
 
Femme Tali Zorah
Développeur Web
Inscription : avril 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Femme Tali Zorah
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2012
Messages : 3
Points : 5
Points : 5
J'utilise un Rectangle et Intersects() et des IF pour le comportement des sprites choqué. je n'arrive pas à avoir tout les comportements "naturel" de direction.

Il doit y avoir une autre méthode de détection d'intersection qui donne plus d'information que celui de Intersects() qui retourne un simple bool (True / False).
un système qui donnerai par exemple la position X et Y du choc. ce qui permettrait de savoir si le choc c'est fait en haut ou en bas. ou encore à gauche ou a droite. ou peut être même plus précis encore...

Cela existe en XNA !?
talizorah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2012, 12h28   #4
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 476
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 476
Points : 40 554
Points : 40 554
Bonjour,

Utiliser Intersects est une bonne idee, mais comme vous avez pu le remarquer cela ne suffit pas.
Une fois que vous avez detecte la collision, il faut que vous ajoutiez des tests pour savoir l'emplacement du rectangle par rapport a l'autre. Cela peut etre effectue avec quelques tests. ( Pour ces if, il est conseille de prendre une feuille de papier )

On peut aussi utiliser une technique de detection en se basant sur des rayons. Le rayon etant la direction du sprite, il faudra faire une detection rayon / rectangle pour savoir s'il y a collision et comment reagir. Mais, cette derniere methode est plus lourde. surtout pour de simple sprite.
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2012, 22h54   #5
idmapria
Inactif
 
Inscription : novembre 2011
Messages : 110
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 110
Points : 91
Points : 91
utilise les centres des rectangles

en pseudo code vectoriel ça donne:

vecteur_nouvelleVitesseObjet1 = float_vitesse * normalisation( vecteur_centreObjet1 - vecteur_centreObjet2 )
idmapria est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2012, 10h54   #6
talizorah
Invité régulier
 
Femme Tali Zorah
Développeur Web
Inscription : avril 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Femme Tali Zorah
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2012
Messages : 3
Points : 5
Points : 5
Bonjour,
Merci à vous deux pour les réponses. Je vais essayer de trouver comment faire cela en XNA

talizorah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h57.


 
 
 
 
Partenaires

Hébergement Web