¿Cómo puedo predecir colisiones de jugador a proyectil en Box2D?

8

Estoy haciendo un juego de disparos en tiempo real con Box2D como motor de física. El juego es principalmente sobre la trayectoria, como Angry Birds. Quiero hacer un efecto de cámara lenta y mover la cámara al jugador cuando lo maten, pero el efecto debería comenzar cuando la piedra todavía está en el aire, antes de que ocurra la colisión.

La magnitud del daño solo se calcula en caso de colisión, en función del impulso. Debido a que es un juego en tiempo real, el jugador debe poder mover el cuerpo físico de su personaje sin retraso.

¿Cómo puedo predecir su muerte? ¿Es posible? Podría emitir rayos, pero ¿qué pasa si otro objeto se mueve para bloquear su camino?

ingrese la descripción de la imagen aquí

Arch1tect
fuente
1
Nota teórica: El futuro de los sistemas no deterministas es, por definición, impredecible. Vea el gato de Schrödinger , reemplazando mentalmente "gato" con "personaje jugador".
Anko
1
@Anko idea muy interesante! Nunca lo he intentado. Pero el jugador aún puede moverse, por lo que no es predecible a dónde va o qué tan lejos llega. Sin embargo, sé la velocidad de movimiento del jugador por lo que cuando la piedra está lo suficientemente cerca, sé que no se perderá ...
Arch1tect
1
(1/2) IMO sería mucho más interesante si usaras un rayo para ver si una colisión tiene una probabilidad decente de ocurrir, luego inicia el zoom de la cámara y ralentiza el juego. Para cada cuadro, vuelva a hacer el molde de rayos para ver si la piedra todavía está en curso de colisión. Si se intercepta la piedra, la cámara debería volver a acercarse a su estado normal, pero para cada fotograma la colisión es probable, acerque un poco más la cámara.
NauticalMile
1
(2/2) Esto matará a dos pájaros de un tiro (juego de palabras no intencionado): no necesitarás hacer 'mirar hacia el futuro', y los jugadores experimentarán la emoción de casi fallas, así como directa (o pastoreo) golpes. De hecho, podría argumentar que tus efectos se volverán aburridos si el jugador sabe que, cada vez que la cámara se acerca y el juego se ralentiza, está condenado. Querrá omitir la 'animación' inmediatamente e intentarlo de nuevo. Pero si existe la posibilidad de que pueda evadir la piedra, puede apostar que se morderá las uñas esperando ver el resultado.
NauticalMile
1
(1/2) @NauticalMile oye, ¡esa es una muy buena idea también! Me temo que es posible que no se aplique directamente a mi juego porque el jugador es golpeado con demasiada frecuencia, por lo que el acercamiento y la cámara lenta pueden interrumpir demasiado el juego en curso.
Arch1tect

Respuestas:

2

¿Por qué calcular la trayectoria de los sonidos / efectos de ralentización?

Si divide el acto de ralentizar la cámara y reproducir efectos en secciones al acercarse a su víctima blanda, entonces esencialmente puede reproducirlos a condición de su proximidad.

Este es un gran ejemplo que viene a la mente. Los efectos de desaceleración de proximidad empleados en Peggle

La pelota se acerca a la clavija y comienza a disminuir. En realidad, esto se basa completamente en la proximidad, no hay trayectoria involucrada. Si se acerca lo suficiente a la última clavija, comienza un redoble de tambor y ralentiza el juego, si no golpea la clavija y sale del rango, escuchará "Awww .. :(" y todo volverá a la normalidad, pero si choca, obtendrás la Obertura completa y la pantalla ganadora.

Esta es una gran técnica si apruebas hacer que tu jugador diga "¡Santo cielo, casi me golpean!". Si tiene un sonido / efecto de arranque para una cámara de muerte que se reproducirá antes del impacto, simplemente actívelo cuando la piedra esté lo suficientemente cerca como para que, incluso si el jugador se movió a la velocidad máxima en cualquier dirección, tengan un gran cambio al ser aplastados .

Digamos que su roca se está cayendo y desea comenzar el efecto de ralentización a ~ 4 m del jugador: comienza disparando la desaceleración, mueve la cámara y comienza a enfocarse en el jugador; si la roca es interrumpida por otros escombros, entonces simplemente salga del enfoque de ralentización y su reproductor continuará normalmente.

ingrese la descripción de la imagen aquí

Esta es esencialmente la forma en que Peggle maneja su efecto de desaceleración y activa la música del juego final y es perfectamente viable para usar en su escenario de escena de muerte de cámara / rock / squishy.

Tom 'Blue' Piddock
fuente