Saludos amigos, estoy creando un juego de disparos y eso. En el juego tengo un tanque, ya hice que disparara y todo bien, pero cómo hago para que la bala salga desde la punta del cañon de tanque? Probé centrando el sprite del tanque en el cañon y creando la instancia de la bala en relative, pero entonces eso me afecta el movimiento del tanque ya que se ve feo al correr. Entonces, cómo haría para que la bala salga desde la punta del cañon del tanque sin que afecte el movimiento?

Agradecería mucho la ayuda y el apoyo. De antemano, gracias. :)
¿Te gustaría crear un videojuego multijugador en línea con GameMaker Studio? Si la respuesta es afirmativa, estás leyendo la firma correcta ;). Visita mi curso alojado en Udemy en el cual enseño a desarrollar uno de manera clara, precisa y simplificada, ¡Échale un vistazo!

https://www.udemy.com/desarrollo-de-juegos-multijugadores-en-linea-con-gamemaker-y-python-3/

2 opciones planteando que es un topdown shooter:

1) si tu tanque y la torreta son dos sprite separados podrias hacer que la profundidad de la bala sea menor que la parte baja del tanque y mayor que la torreta, creando asi un sandwich
torreta
bala
tanque, parte baja
2)hacer una serie de calculos matematicos en los que entran transicion o algo asi de vectores, lo que implicaria el uso de senos, cosenos y radianes. hay un tema que trata precisamente este punto con un ejemplo y todo. buscalo, se llamaba como rotar un spine o algo asi.
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

Usa el método escalar más sencillo, si tu tanque es de cuatro direcciones solo usa un switch, ejemplo:

switch(lado){
  case "derecha":
     instance_create(x+16,y,obj_bala);
     break;
  case "izquierda":
     instance_create(x-16,y,obj_bala);
     break;
  case "abajo":
     instance_create(x,y+16,obj_bala);
     break;
case "arriba":
     instance_create(x,y-16,obj_bala);
     break;
}

todo esto suponiendo que el valor de la variable "lado" guardara la posición actual del tanque
ahora el codigo anterior sacara la bala mas exacta a la posición actual del cañón(todo depende del tamaño del sprite)
ahora si el tanque se mueve en 360° las funciones "lengthdir_x" y "lengthdir_y" te serán útiles

con ue pongas el punto de origen x más atrás del sprite ya vale perfectamente.
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Hola, para solucionarlo (aunque depende también de tu caso) debes utilizar una matriz de rotación; este es un pequeño script que acabo de publicar:

http://www.comunidadgm.org/desarrollo-de-scripts/obtener-posicion-de-adjuntado/

Saludos

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.