J'ai une simple applet Java qui a deux boules contrôlées par l'utilisateur, dessinées en utilisant java.awt
. J'ai besoin d'un moyen de détecter une collision entre eux. Je un algorithme de détection de collision avec les parois:Détection de collision pour les cercles
if (xPosition > (300 - radius)){
xSpeed = -xSpeed;
}
else if (xPosition < radius){
xSpeed = -xSpeed;
}
else if (yPosition > (300 - radius)) {
ySpeed = -ySpeed;
}
else if (yPosition < radius){
ySpeed = -ySpeed;
}
xPosition += xSpeed;
yPosition += ySpeed;
et pour la deuxième bille:
if (xPosition2 > (300 - radius)){
xSpeed2 = -xSpeed2;
}
else if (xPosition2 < radius){
xSpeed2 = -xSpeed2;
}
else if (yPosition2 > (300 - radius)) {
ySpeed2 = -ySpeed2;
}
else if (yPosition2 < radius){
ySpeed2 = -ySpeed2;
}
xPosition2 += xSpeed2;
yPosition2 += ySpeed2;
- L'applet est de 300 pixels par 300 pixels.
radius
stocke le rayon des cercles.xPosition
etxPosition2
stocker les coordonnées x pour les deux balles.yPosition
yPosition
et stocker les coordonnées Y pour les deux billes,xSpeed
xSpeed2
et stocker les vitesses de x pour les deux billes.ySpeed
etySpeed2
stocker les vitesses y pour les deux balles.
Bienvenue sur SO, Bob. C'est vraiment plus une question mathématique qu'une question de programmation, car il n'y a aucun moyen de faire ce que vous voulez construit dans le langage Java. Pour commencer, cependant, pensez-y de la façon suivante: détecter des collisions signifie détecter quand les balles vont se chevaucher ou se toucher, n'est-ce pas? Et vous connaissez leurs positions et leurs tailles ... – Pops
Ya, mais je ne peux rien penser. J'ai essayé de le faire à travers les maths et je me suis retrouvé avec des balles qui se croisaient et environ 30 lignes de code inutile –