Estoy con un minijuego que acabo de empezar y tengo, una pelota, una barra fina, la pelota va velocidad 20, la barra tiene un ancho de 8, deben colisionar, pero claro, con esos valores, de un step, la pelota atraviesa la barra... esto como se puede solucionar? :(
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Existen muchas formas para solucionar el problema.
La primera sería hacer que el objeto se mueva distancias cortas e ir checando en cada posición si hay una colisión, esto se haría varias veces en cada step. Pero este proceso es muy ineficiente.
La segunda forma es hacer que el movimiento se haga en distancias cortas, como en el caso anterior, pero sólo cuando se encuentre a una distancia determinada del otro objeto. Si tu barra es como la de arkanoid puedes hacer éste proceso cuando la diferencia entre las variables "y" de cada objeto sea muy pequeña.
Otra forma sería usar la función "collision_line", si la pelota está cerca de la barra pero no hay colisión revisa si la línea entre los puntos (x,y) y (xprevious,yprevious) colisiona con la barra; si es así, en la trayectoria que lleva la pelota ocurrió una colisión.
Otra forma sería manejar vectores y algo de trigonometría pero aún no tengo claro cómo hacerlo.

#2 Noviembre 02, 2014, 03:44:14 AM Ultima modificación: Noviembre 02, 2014, 03:46:31 AM por kostra
juas juas, bueno nada, solucionado, pensando pensando, se me ha ocurrido, hacer un sprite que fuera muy ancha con el offset colocado como interesa y en el step de la barra puse:
if oball.x < x - oball.speed mask_index = sbar; else mask_index = smask; y así me va todo perfecto, cuando colisiona colisiona bien porque es la mask ancha y cuando pasa por detrás, pero contando la velocidad, no sea que se me cambie la mask cuando la bola a atravesado xd, pues cambia la mask a la normalidad para que la bola no colisione con algo invisible detrás de la barra xd

EDITO: hemos posteado a la vez xd la segunda opción ke has dicho es buena, como no se me ocurrío xd
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]