Intente ya muchas cosas.Pero nada me esta funcionando
En resumen:Necesito que me ayuden a hacer que un proyectil apunte para la direccion en que se dirige,aproximadamente y que cambie de direccion dependiendo de donde se encuentre el Player
Se usar las acciones Drag'n Drop y algunos codigos que se pueden introducir como Sprite_index,Image_index,Vspeed etc

¿Y por qué no indicas qué cosas has intentado exactamente? ¿A qué te refieres con "multiples sprites por dirección"? Así como está se entiende que para una dirección hay varios sprites, y creo que eso no es correcta ni es la mejor manera de hacerlo funcionar

Cita de: penumbra en Septiembre 10, 2014, 06:02:57 AM
¿Y por qué no indicas qué cosas has intentado exactamente? ¿A qué te refieres con "multiples sprites por dirección"? Así como está se entiende que para una dirección hay varios sprites, y creo que eso no es correcta ni es la mejor manera de hacerlo funcionar
Es que las preguntas demaciado largas o detalladas tienden pasar de ser percividas.
Una eplicacion mejor por si tienes la amabilidad de ayudarme:
El proyectil es un misil,por lo que dependiendo de la direccion en que se mueva,la punta deve apuntar en esa misma direccion o una aproximada.
En un principio probe asignarle una direccion a cada uno de los sprites(Es un solo Sprite,la direccion del misil recorre los 360 grados en el)
por lo que dependiendo de a donde apunte el misil,la direccion seria distinta.Ahi logre que tubiera bastante sentido,pero el misil solo volaba en un circulo.
Probe hacer que dependiendo de si el Player se encontraba debajo o arriba de el(y1 y2)al sprite del misil se le adelantarian 2 o mas imagenes,para que cambie de direccion mas rapido.Pero no supe como expresar donde se encuentra el player exactamente.
Luego probe asignandole un sprite a cada direccion.es un sistema bastante parecido.Pero nuevamente tube problemas con localizar al player y dar una direccion exacta.
¿Tienes una idea de que podria hacer o de donde podria solucionar el problema?

Pues es fácil aunque no lo he probado. Si el misil avanza en una dirección de 30°, su sprite debe tener la misma "rotación" o ángulo, es decir:
[gml]image_angle = direction[/gml]

El código anterior sirve en el caso de que el misil sea un simple sprite con una sola imagen. Si el sprite tiene varias subimagenes mostrando al misil en distintas direcciones, sería
[gml]image_index = direction * image_number / 360[/gml]

Cualquiera de los códigos iría en [STEP] del misil




Yo ahora estoy haciendo un shooter vertical y mi nave dispara misiles guiados. Te explico como lo he hecho yo:

En el create del objeto misil:

target=instance_nearest(x,y,obj_enemigo);

Este código busca la instancia de enemigo más cercana. Si quieres que vaya a por cualquier enemigo, deberás hacer un objeto enemigo_parent y que todos los demás enemigos hereden de él.

En el step:

if instance_exists(target) //si existen enemigos
{
motion_add(point_direction(x,y,target.x,target.y),0.5); //se dirige a la posición del target
effect_create_above(ef_smoke, x, y+10, 0, c_gray); //crea un efecto de estela

image_angle=direction-90;//para que el sprite quede bien posicionado
}
if speed>20 speed=20;


Espero te sirva

saludos :GMS:
Fan de los retro-juegos 2D, arcades, plataformas. Programador. Amiga and MSX fan