Hola gente, tengo el siguiente problema a ver si a alguien se le ocurre como solucionarlo, una room física y un proyectil para lanzar con impulso, el problema empieza cuando el jugador quiere cambiar de proyectil (hay una menu donde se elige) y esos proyectiles tienen distinta densidad, restitución, etc. Si lo hago cambiando el image_index o sprite_index el problema esta en la collision shape que no se actualiza a un nuevo sprite, lo que me obliga a crear tantos objetos como cantidad de proyectiles de distintas caracteristicas, mi mayor problema es que instance_change no funciona en el mundo físico y creo que con instance_destroy() seria muy dificil porque no se como indicarle que destruya el proyectil que esta ahí (el que no quiere lanzar), en total son 10 tipos distintos, si alguien sabe por favor necesito ayuda amigoss

#1 Noviembre 04, 2014, 07:23:17 AM Ultima modificación: Noviembre 04, 2014, 07:39:26 AM por penumbra
Me parece captar que en tu juego los proyectiles no se crean  al momento de pulsar un botón/tecla de disparo, sino que antes de disparar el proyectil aparece en el juego ya colocado ¿es así?

En primer lugar, yo agruparía a todos los objetos proyectil bajo un objeto padre, por ejemplo obj_padre_proyectil. Luego, hay que comprobar si se puede disparar...
[STEP]
[gml]
if instance_exists(obj_padre_proyectil)
     ready = 1
else
     ready = 0

if (ready)
{
      // código para disparar
}
[/gml]

En tu pregunta anterior sobre seleccionar distintos objetos, coloqué un ejemplo, voy a considerar que se usa el mismo método para seleccionar los proyectiles y la misma variable que indica si hay un objeto seleccionado. También voy a suponer que en este caso, para borrar el proyectil después de hacer click en él, se presiona la tecla 'D'
[gml]
if ( seleccionado != noone ) and ( keyboard_check(ord('D')) )
{
     with(seleccionado)
          instance_destroy()
}
[/gml]
[EVENTO DESTROY] de obj_padre_proyectil[gml]
seleccionado = noone
[/gml]

Hola, es tal como lo captaste, los proyectiles aparecen solos, lo tengo configurado con instance_exists de manera que si no hay un proyectil en la room se cree por eso siempre hay uno. El código que me diste funciona perfecto pero lo que no se como hacer aun es cambiar el proyectil, el jugador esta lanzando supongamos bolas, lanza al objetivo la bola, esta se destruye, se crea otra bola en una zona aleatoria, lanza boom se destruye y es un bucle, llega a cierto puntaje o cantidad de veces jugadas, eso no es relevante pero lo que si es que desbloquea otro proyectil, ahora puede elegir entre lanzar bolas o bombas, lo que quiero es ver cual es la forma mas práctica para hacerlo, la idea original era que todo pase en la room de juego pero me genera el problema de que la nueva instancia debe crearse en la misma ubicación en que estaba la anterior (sino el jugador cambiaria una y otra vez hasta que se cree el proyectil justo donde lo quiere y la gracia es que se a aleatorio, a veces es un tiro cómodo y otras no lo es) por eso antes de saber que no se podía creí que el instance_change me solucionaría la vida pero no puedo usarlo y ahí mi cabeza explotó jaja... gracias por la ayudaa

instance_create(x,y,nuevainsancia);
instance_destroy();

te vale eso?
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Sí, es la única opción pero como indico que se destruye? o sea, si se crea la nueva instancia, si existen alguna de las otras 9 instancias en la room que se destruya, como uso algo como if! instance_exists(mas de un objeto)? de manera que siempre haya un proyectil para lanzar?

if instance_number(objeto) >= 9

y si son objetos distintos pero que estén todos:
if instance_exists(objeto1) and instance_exists(objeto2), etc...

EDITO: un GRAN consejo es escibir el principio de comandos que ya te sabes para que salga la lista y experimentar con las cosas que no hayas usado antes, así se aprende bastantes cosas nuevas ^_^
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]