Le ralentissement des objets dans box2d sans gravité
Je fais un jeu de billard, de sorte que mes gravité est mis à zéro et je l'applique impulsion pour faire une boule se déplacer. Car il n'y a pas de gravité, j'utilise à la fois linéaire et angulaire d'amortissement pour ralentir les balles vers le bas.
Alors que les balles ont une décente de vitesse, ils ralentissent de façon réaliste. Le problème commence quand ils ralentissement beaucoup et sont sur le point de s'arrêter, mais ne fait pas de stop pendant 4 à 5 secondes, et c'est un look très irréaliste.
L'une des solutions que j'ai pensé à vérifier à chaque image la vitesse de la balle et si elle est en dessous d'un certain nombre (c'est à dire quand la balle est sur le point d'arrêt), à faire zéro à l'arrêt de l'objet. Le problème avec cette approche est que je fais un jeu multijoueur, où deux joueurs peuvent être un peu différents taux de trame et donc de faire deux simulations de la même prise de vue contradictoires.
Quelqu'un peut-il songer à une autre solution?
- Je ne suis pas sûr si box2d de l'aide, mais ce que vous êtes à la recherche pour de frottement.
- J'ai pensé à ça aussi, mais il n'y a rien sous le ballon à un frottement avec. Les balles ne peuvent entrer en collision avec d'autres boules ou des coussins, mais pas avec la table (c'est à dire de table en tissu, comme ils ne déplacer que dans x et y, mais pas dans z).
- Je pense que vous devriez remplacer l'amortissement avec une force toujours à l'opposé de la boules de la direction du mouvement, la quantité de force que vous pouvez régler jusqu'à ce que vous trouvez quelque chose qui est visuellement acceptable.
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est que vous avez besoin non linéaire d'amortissement, alors essayez de modifier l'amortissement linéaire de la valeur sur chaque image, avec une formule basée sur la vitesse actuelle.
Essayez d'utiliser l'amortissement linéaire du paramètre de
b2Body
:setLinearDamping
va prendre une éternité pour faire de votre objet vélocité = 0.0, même après la mise à jour de la vitesse = 0.0, il y a petite quantité de force ici. Je vais avoir le même problème avec @Alex prise de multipleplayer jeu. Vous pouvez lire ma question ici: stackoverflow.com/questions/39716111/...Si vous faites un jeu multi-joueurs vous avez besoin d'un arbitre pour s'assurer qu'il n'y a pas d'incohérences. Soit un serveur qui à la fois les clients de vous connecter à l'un (ou les deux) des clients peut être de l'hôte.
La chose importante est que chaque plan est calculé et envoyé aux deux parties avant qu'il est indiqué. Depuis le billard est de tourner la base. Chaque client peut héberger leur propre tir et a envoyé le résultat à "rejoué" dans la adversaires de jeu. En outre, cela signifie que le temps de latence ne devrait pas être trop un problème de sorte que vous pouvez envoyer l'image par image de la balle positions (même si ce n'est pas optimal, il est le plus facile à mettre en œuvre).
Si vous voulez quelque chose que vous pouvez utiliser pour la connexion sans les tracas de la mise en place d'un serveur ont un coup d'oeil à pubnub (http://www.pubnub.com/). De compte et de développement est gratuit et il est relativement facile à mettre en place.
Espérons que cette aide! ^^