Hola:
Me urge un poco saber cómo hago esto:
Verán, lanzo 30 bolitas de igual tamaño y forma, pero de colores diferentes, al crearse se mueven siguiendo un PATH. Lo que quiero es que cada bolita al llegar y colisionar con la bolita anterior, se detenga justo dos pixeles antes, es decir casi pegaditas. Cuando cada bolita llega a donde está detenida la anterior, el PATH termina para ella y así sucesivamente cada una se deteniendo justo antes de la anterior a lo largo del path.
Hasta ahora lo hago con un objeto parent que hace esto, pero en ocasiones ellas chocan con la anterior y la empujan y luego quedan traslapadas, una casi sobre la otra. Estoy usando este código, más o menos:
colision event with parent
path_end()
PD: el sprite lo tengo centrado.
¿Cómo hago que me queden separadas cada una en su sitio?
Gracias , me urge para terminar un jueguito.
Intentas hacer un juego tipo zuma? :-[
Pues no das mucha información de tu código, pero también sería bueno que definieras la velocidad (speed) en cero, para que se detenga definitivamente :P
path_position -= //Lo que equivale a 2 pixeles en tu path iria aca
path_end()
Me parece que funcionaria asi.
Cita de: MaanuRP en Febrero 13, 2012, 02:01:09 AM
path_position -= //Lo que equivale a 2 pixeles en tu path iria aca
path_end()
Me parece que funcionaria asi.
A ver MaanuRP, hermano, dónde pondrías este código, en cada bola? en qué evento?
Explico con cucharas lo que quiero:
1) Presiono el botón JUGAR
2) 30 Bolitas salen una a una cada un segundo, todas siguen el mismo PATH.
3) La primera se detienen donde termina el PATH.
4) La segunda, se detiene justo dos pixeles antes de chocar con la otra y así lo mismo todas las demás.
¿Por qué algunas (no todas) chocan con la anterior y la empujan un poco y luego quedan montadas a la mitad?
Ayuda, nada me funka aún.
Gracias :'(
if place_meeting(x+lengdir(2,path_direction),y+lengdir(2,path_direction),obj...)
path_end()
El codigo es qasi aunque lo escribi mal pero al escribirlo al gm este recuerda que te completara cada codigo asi que escribelo no uses copy paste
Cita de: elviskelley en Febrero 14, 2012, 07:43:02 AM
if place_meeting(x+lengdir(2,path_direction),y+lengdir(2,path_direction),obj...)
path_end()
El codigo es qasi aunque lo escribi mal pero al escribirlo al gm este recuerda que te completara cada codigo asi que escribelo no uses copy paste
Bueno, Gracias Elvis:
Lo hice así:
Event STEP del objeto pariente:
if place_meeting(x+lengthdir_x(2,path_direction),y+lengthdir_y(2,path_direction),pariente_bolitas)
{path_end(){path_speed=0}}
No funciona, siempre algunos pares se detienen montados, traslapados en un 25%.
Aumenta el 2 por un numero mayor hasta lograr el resultado deseado.
Saludos Makero kaliman777:
Tengo una pregunta. ¿El objeto "parent" del que hablas, que es el encargado de detener las "bolitas", es el padre de las "bolitas"? Si es así, cada "bolita" ejecuta el código de detenerse. Ese me parece que es el problema.
Deberías tener un objeto que se encargue de realizar el chequeo de colisión, no tantos objetos, pues se puede "marear" el juego.
Mi propuesta es diseña un objeto que chequee "bolita" por "bolita" si está en movimiento primero y después si está lo suficientemente cerca como para detenerla. Creo que de esta forma no se superpondrán una con otra.
Si esto no funciona, puede ser que el chequeo de colisión se realiza tarde, cuando ya es inminente. Deberías hacer el chequeo según la velocidad.
Por ejemplo: Si me muevo a cinco (5) "píxeles" por segundo el cheque debo hacerlo en el "step" anterior. Si en el próximo paso de cinco (5) "píxeles" chocaría, entonces detengo la "bolita" y la posiciono a la distancia deseada.
Espero te sirva de algo, de todas formas estoy encontacto...
Game Over..
Cita de: ferhand en Febrero 15, 2012, 05:07:28 PM
Saludos Makero kaliman777:
Tengo una pregunta. ¿El objeto "parent" del que hablas, que es el encargado de detener las "bolitas", es el padre de las "bolitas"? Si es así, cada "bolita" ejecuta el código de detenerse. Ese me parece que es el problema.
Deberías tener un objeto que se encargue de realizar el chequeo de colisión, no tantos objetos, pues se puede "marear" el juego.
Mi propuesta es diseña un objeto que chequee "bolita" por "bolita" si está en movimiento primero y después si está lo suficientemente cerca como para detenerla. Creo que de esta forma no se superpondrán una con otra.
Si esto no funciona, puede ser que el chequeo de colisión se realiza tarde, cuando ya es inminente. Deberías hacer el chequeo según la velocidad.
Por ejemplo: Si me muevo a cinco (5) "píxeles" por segundo el cheque debo hacerlo en el "step" anterior. Si en el próximo paso de cinco (5) "píxeles" chocaría, entonces detengo la "bolita" y la posiciono a la distancia deseada.
Espero te sirva de algo, de todas formas estoy encontacto...
Game Over..
Sí, Ferhand. Uso un pariente porque no se me ocurrió cómo hacer que 90 bolas trabajen la colisión entre ellas mismas. Busqué un padre que las reconoce como diferentes a ellas mismas entre sí.
Fíjate que sólo con un sprite me sale el problema, lo raro es que es igual en todo a los demás. Sólo camvbia la figurita, es la bola 2.
Talvez usando otro objeto controlador, pero no sé qué código usar, talvez con variables.
Veré q hago,
saludos y gracias