Comment puis-je prédire les collisions joueur-projectile dans Box2D?

8

Je fais un jeu de tir en temps réel avec Box2D comme moteur physique. Le gameplay concerne principalement la trajectoire, comme Angry Birds. Je veux créer un effet de ralenti et déplacer la caméra vers le joueur lorsqu'il est tué, mais l'effet devrait commencer lorsque la pierre est encore dans l'air, avant que la collision ne se produise réellement.

L'ampleur des dommages n'est calculée qu'à la collision, sur la base de l'impulsion. Parce que c'est un jeu en temps réel, le joueur doit être capable de déplacer le corps physique de son personnage sans décalage.

Comment puis-je prédire leur mort? Est-ce même possible? Je pourrais diffuser des rayons, mais que se passe-t-il si un autre objet bouge pour bloquer son chemin?

entrez la description de l'image ici

Arch1tect
la source
1
Note théorique: L'avenir des systèmes non déterministes est par définition imprévisible. Voir le chat de Schrödinger , remplaçant mentalement "chat" par "personnage de joueur".
Anko
1
@Anko idée très intéressante! Je n'ai jamais essayé ça. Mais le joueur peut toujours se déplacer, donc où il va ou jusqu'où il va n'est pas prévisible. Pourtant, je connais la vitesse de déplacement du joueur, donc lorsque la pierre est suffisamment proche, je sais qu'elle ne manquera pas ...
Arch1tect
1
(1/2) OMI, il serait beaucoup plus intéressant si vous utilisiez un raycast pour voir si une collision a une chance décente de se produire, puis démarrez le zoom de la caméra et ralentissez le jeu. Pour chaque image, refaites le lancer de rayons pour voir si la pierre est toujours sur une trajectoire de collision. Si la pierre est interceptée, la caméra devrait simplement revenir à son état normal, mais pour chaque image, la collision est toujours probable, zoomez un peu plus sur la caméra.
NauticalMile
1
(2/2) Cela tuera deux oiseaux avec une pierre (le jeu de mots n'est pas prévu): vous n'aurez pas besoin de regarder vers l'avenir, et les joueurs éprouveront le frisson des quasi-accidents ainsi que direct (ou pâturage) frappe. En fait, je pourrais affirmer que vos effets deviendront ennuyeux si le joueur sait que, chaque fois que la caméra zoome et que le jeu ralentit, il est condamné. Il voudra sauter immédiatement l '«animation» et réessayer. Mais s'il y a une chance qu'il puisse échapper à la pierre, vous pouvez parier qu'il se mordra les ongles en attendant de voir le résultat.
NauticalMile
1
(1/2) @NauticalMile hé, c'est aussi une très bonne idée !! Je crains que cela ne s'applique pas directement à mon jeu car le joueur est frappé trop souvent, donc le zoom avant et le ralenti peuvent trop interrompre le jeu en cours.
Arch1tect

Réponses:

2

Pourquoi calculer la trajectoire des sons / effets de ralentissement?

Si vous divisez l'acte de ralentir la caméra et de jouer des effets en sections à l'approche de votre victime squishy, ​​vous pouvez essentiellement les jouer à condition de leur proximité.

C'est un excellent exemple qui me vient à l'esprit. Les effets de ralentissement de proximité utilisés dans Peggle

Le ballon se rapproche de la cheville et commence à ralentir. Ceci est en fait basé complètement hors de la proximité, sans trajectoire impliquée. S'il se rapproche suffisamment de la dernière cheville, il lance un roulement de tambour et ralentit le jeu, s'il ne touche pas la cheville et sort de la plage, vous entendez "Awww .. :(" et tout revient à la normale, mais s'il entre en collision, vous obtiendrez l'ouverture complète et l'écran gagnant.

C'est une excellente technique si vous approuvez à faire jouer votre joueur "Sainte vache, j'ai failli être touché!". Si vous avez un son / effet de démarrage pour une caméra de la mort qui jouera avant l'impact, déclenchez-le simplement lorsque la pierre est suffisamment proche pour que même si le joueur se déplace à la vitesse maximale dans n'importe quelle direction - ils ont un grand changement à se faire écraser .

Supposons que votre pierre tombe et que vous souhaitez commencer l'effet de ralentissement à environ 4 m du lecteur: vous commencez par déclencher le ralentissement, déplacez votre appareil photo et commencez à vous concentrer sur le joueur - si la pierre est ensuite interrompue par d'autres débris, puis quittez simplement la mise au point et votre lecteur continue comme d'habitude.

entrez la description de l'image ici

C'est essentiellement la façon dont Peggle gère leur effet de ralentissement et déclenche la musique de fin de jeu et est parfaitement viable pour une utilisation sur votre caméra / rock / squishy préemptant le scénario de la scène de la mort.

Tom 'Blue' Piddock
la source