¡Muy buenas!
Bueno, tengo un par de dudas con respecto al disparo de un personaje.
Empiezo explicando: El juego es simple; el personaje principal estará en el centro del room y tendrá que disparar a los enemigos que se le acerca. Ya tengo el disparo, pero me surgieron unas preguntas:
Primero: El objeto del personaje que dispara, está configurado para que mire hacia la bala que dispara. Para disparar tan solo hay que hacer click con el ratón y deslizar al lado contrario del que quieres desparar (Es decir, si quieres disparar hacia la derecha, tienes que pinchar y deslizar hacia la izquierda). Pero lo que queremos es que no solo dispare al deslizar, sino que también, dependiendo de cuanto deslices, al soltar, la bala avanza en mayor o en menor medida. (Es decir, si deslizas mucho la bala avanzará más que si deslizas poco)
Segundo: Cuando la bala llegue a su final (Ejemplo: Pongamos que se puede deslizar con una longitud de entre 5 a 10. Si deslizo a 5, la bala avanzará 5. Si deslizo 10, avanzará 10, teniendo un mínimo y máximo de avance) y justo ahí volverá a su lugar de origen (Aclaración: La bala es un corcho atada al fusil).
RESUMIENDO: Lo que pido es como hacer que dependiendo de cuanto deslices avanza más o menos, y como hacer que al terminar de moverse, vuelva seguidamente al lugar de origen.
Como nota final, diré que la instancia de la bala se crea justo cuando sueltas al deslizar, y, por ese mismo motivo, cuando regresa debería desaparecer.
Esto es todo, ¡Un saludo y gracias! ^^
Edito: Etto.. ¿Alguien? ;_;
Una forma de hacerlo es la siguiente: suponiendo que para disparar hay que hacer click en el personaje y luego arrastrar, en el evento left pressed del personaje guardas la posición del mouse: x1=mouse_x;
y1=mouse_y;
Luego, en el evento global left released mides la distancia entre el mouse y las coordenadas anteriores, mediante:
d=point_distance(x1,y1,mouse_x,mouse_y);
Esto te dará la distancia que se arrastró el mouse entre ambos puntos y con ella puedes definir el alcance del disparo.
Para lo segundo, suponiendo que la bala avanza a velocidad constante, puedes usar una alarma en la bala que le indique que es hora de volver a su lugar de origen. La puesta de la alarma debería tener la forma:
alarm[x]=floor(d/v);
donde d es la distancia que debe recorrer y v la velocidad a la que avanza la bala.
Sólo debes tener cuidado de considerar que el jugador no presione y suelte el mouse en el mismo punto o la distancia calculada será cero (simplemente ignora un intento de disparo en este caso).
Te dejo un ejemplo, lo hice lo mas sencillo posible, con algunos comentarios para que se entienda, por cualquier duda pregunta :P