Colisión 2d de dos bolas

Buenas, esoy haciendo un juego de basket en flash. Necesito que me expliques como debo calcular el angulo de salida i la fuerza de dos bolas cuando xocan, tanto si las dos son móviles (independientemente de la velocidad que lleven o si en el momento del impacto están paradas); como si una de las dos es fija.

1 respuesta

Respuesta
1
Para detectar cuando dos movieClip chocan tienes tu_clip. HitTest("otro_clip") con esto podrás comprobar si dos clips de película están en contacto. Pero esto tiene en cuenta el recuadro que delimita el movieClip.
Así que si el clip contiene un círculo con un diámetro de 100 pixeles el hitTest comprobará un recuadro de 100 x 100 pixeles que encierra el círculo.
Para utilizarlo inserta antes del punto uno de los movieClip y entre paréntesis el otro.
Así puedes poner este código en el clip llamado "clip1" para saber si está en contacto con el clip llamado "clip2".
---
onClipEvent(enterFrame){
//Podría poner clip1 en lugar de this, es exactamente lo mismo teniendo en cuenta que este código esta en el clip1.
if (this.hitTest("clip2"){
trace ("Los clips están en contacto.");
} else {
trace ("No se tocan");
}
---
Para el ángulo de entrada lo mejor consiste en el MOVIMIENTO del objeto, por lo que necesitan la dimensión del tiempo, no basta con las coordenadas x e y.
Para esto recomiendo antes de mover el clip guardar las coordenadas en x_antiguo e y_antiguo.
Así tendremos donde estaba antes (x_antiguo, y_antiguo) y donde está ahora (_x, _y).
Mi instinto me dice que solo con estos datos ya se puede obtener el ángulo de entrada del objeto pero llevo 90 minutos y 8 páginas llenas de gráficos y no consigo obtener el algoritmo.
Una vez con el ángulo de entrada para el ángulo de salida contra paredes verticales, suponiendo que el objeto avanza 10 pixeles horizontales(x) y 5 verticales(y), basta con invertir el valor de x, así 10 pasaría a ser -10 con lo cual la pelota se dirigiría hacia la otra dirección creando un efecto realista.
En suelos y techos horizontales hay que invertir Y.
Obviamente si y o x son negativos su inverso es el positivo del mismo número.
Para las fuerzas también utilizaremos las variables x_antiguo e y_antiguo.
Restando x_antiguo a _x e y_antiguo a _y obtendrás cuantos pixeles se ha movido el objeto, y cuanto más rápido se mueva más fuerza tendrá.
Por supuesto no puedo explicar con detalles todas las respuestas de tus preguntas.
Si quieres que te aclare alguna o todas, pregunta por separado por favor.
Mucha suerte, no te irá mal :P
---
Sel
Si eso es exactamente lo que tengo, la bola1 rebota como tu sa dicho invirtiendo la velocidad con la tangente de la bola2, pero he observado que en la realidad la bola 1 no rebotaría con la tangente sino de otra forma.. no se si me explico...
De verdad que lo siento, pero en los últimos días no he conseguido crear el algoritmo para hacer rebotar dos esferas, entiendo que si lo que rebotan son dos esferas el ángulo de salida es completamente contrario al ángulo de entrada, pero es este último el que no consigo calcular.
Suerte
---
Sel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas