Comment garderiez-vous une vue de dessus d'un train sur les voies avec le moteur physique Box2D?

StackOverflow https://stackoverflow.com/questions/616375

  •  03-07-2019
  •  | 
  •  

Question

Je pense qu’il serait amusant de modéliser la vue de dessus d’un train suivant une voie, traversant des aiguillages, etc., à l’aide d’une bibliothèque de physique comme Box2D. De quels joints et moteurs aurais-je besoin pour que cela fonctionne?

Je suis curieux de savoir comment mettre en œuvre les forces nécessaires pour que la voiture suive une piste en spline afin de pouvoir heurter d'autres voitures de train, piétons, DeLoreans, etc. ; pour chaque pas de temps créerait des forces excessives dans le moteur physique. Si je comprends bien, vous devez coller la voiture sur la piste avec une force, contraindre son angle à tendre vers la parallèle avec la piste avec une autre (ou coller l’avant et l’arrière de la voiture à la piste avec deux forces) et créer une autre force pour faire avancer le train. Je cherche des détails sur la manière d'accomplir ces choses.

Était-ce utile?

La solution

Je pense que ce serait plus facile sans "réel". la physique, comme le mouvement de la balle dans des jeux tels que Luxor ou Tumble Bugs. Signification: laisser le train suivre une spline définie par les voies.

Utiliser des phyiscs est probablement excessif pour obliger un train à suivre une voie et pourrait entraîner toutes sortes d’effets secondaires indésirables, notamment des mouvements saccadés, un déraillement, un blocage du train, des jonctions, etc.

Cependant, vous pouvez toujours joindre les wagons individuels en utilisant des joints physiques. Assurez-vous simplement que seule la locomotive reçoit les forces d'accélération, le reste du train ne fait que suivre ou est poussé mais reste sur la spline.

Autres conseils

Pourquoi êtes-vous inquiet de le garder "sur les pistes"? Où va-t-il aller? La gravité devrait le maintenir au minimum, l'intersection des objets devrait le maintenir et les seules directions dont vous devez vous soucier sont donc en avant et en arrière. C'est là qu'un moteur entre en jeu et vous avez terminé. Le reste est décoré.

En réponse à la modification du problème:

Siderails. Et assurez-vous que le train est suffisamment long / rigide par rapport à sa largeur pour pouvoir naviguer dans les passages à niveau (rapprochez-les des angles droits afin de minimiser les problèmes de franchissement.

Une vue de haut en bas (c’est-à-dire voir le train du ciel) n’exige pas vraiment de moteur physique en 2D - si je vous ai bien comprise. En fait, il semble que cela n’aiderait pas vraiment le problème (si vous voulez une simulation de train), mais vous voudrez peut-être simplement l’essayer pour le plaisir. :)

Cependant, qu’en est-il de mettre quelque chose comme un joint coulissant sur le train et les wagons et un moteur sur la locomotive. L’articulation coulissante peut nécessiter une implémentation spéciale; vous voulez probablement courir le train le long d'une spline et non d'un segment de lignes droites, non?

Une sorte de joint à rotule relierait les voitures.

L’implémentation n’est pas si compliquée que j’ai réussi à faire un prototype en quelques heures qui fait le travail de base. Il faudra beaucoup de travail pour que tout se passe bien, mais il s’agit essentiellement de "latéraux".

Étant de haut en bas, vous devez évidemment d'abord désactiver la gravité dans Box2D. Deuxièmement, construire un train. Traitez les roues de train comme des roues de voiture et tout deviendra soudain plus simple. Pour les pistes, vous avez plusieurs choix:

  • Créez votre propre objet de jeu (pas dans le monde de box2D) qui est une simple ligne que le train va ensuite "suivre". (vous pouvez utiliser des moteurs sur les roues du train pour "diriger" vers la ligne). Ensuite, superposez simplement la ligne avec une belle "rail" large graphiques et vous avez un système bien falsifié. Dites aux roues de s’éteindre si elle s’égare trop loin de la ligne et que vous avez un déraillement.

  • Créer des rails physiques réels - des rails extérieurs (comme des rails de lit) que les trains "roulent" va tomber sur. Dans ce cas, ils devront avoir des courbes douces, ce qui pourrait être très difficile compte tenu des ressources limitées dont vous disposez (simuler une courbe douce et lente en dehors des cases dans Box2D est rude pour le processeur)

Ensuite, laissez votre train aller!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top