J'ai récemment commencé à programmer des jeux en Java. Je viens d'un arrière-plan C#/XNA et j'ai déjà de l'expérience dans le développement de jeux. Cependant, j'ai un problème dans mon jeu java. J'ai un script rebondissant qui fait rebondir une "particule" dans le jeu lors d'une collision avec une surface solide, comme le sol. Voici un extrait du code qui gère le rebondissement.Java rebond physique: rebond sans fin
private final void respondY(Rectangle r)
{
if(!r.intersects(getBounds())) // If not colliding, return
return;
if(Yvel > 0) // If falling...
{
if(r.y < Y + Height) //Another collision test
{
Y = r.y - Height; // Set Y to top of object
Yvel *= -bounce; // Bounce (Here is the problem)
onFloor = true;
}
}
else if(Yvel < 0) // If hit ceiling
{
if(Y < r.y + r.height) // Collision test
{
Y = r.y + r.height; // Set Y to bottom of object
Yvel = 0; // No bouncing here
}
}
}
Le problème est que les rebonds de l'objet sur le sol comme il se doit, mais après un certain temps l'objet rebondit constamment à la même hauteur où je veux que ça cesse de rebondir quand il est arrivé à cette hauteur constante.
REMARQUE:
Yvel est un entier qui est la vitesse verticale de l'objet
Bounce est un flotteur qui contrôle la « sautillante » un objet. par exemple. 0.5 signifie qu'il rebondit moitié autant qu'il est tombé
Merci d'avance! S'il vous plaît noter que ceci est mon premier poste, donc si je fais des erreurs s'il vous plaît les signaler de manière constructive.
Merci pour la réponse rapide, mais quand j'ai essayé cela, mais le problème persiste. La ligne 'if (Yvel <0)' empêche l'objet de rebondir du tout, et si elle est supprimée, les objets rebondissent toujours à la même hauteur. Changer .0001f à quelque chose de plus grand comme .01f rend la hauteur de rebond constante plus petite, mais elle est toujours là ... Peut-être que quelque chose pourrait être fait avec Math.round() ... – JamesEpicGuru
EDIT: Je n'avais pas vu votre edit dans votre réponse quand j'écrivais le dernier commentaire, j'essaie actuellement de détecter si un objet rebondit à plusieurs reprises à la même hauteur et si c'est le cas, arrête l'objet quand il touche le sol. – JamesEpicGuru