Hola... estoy probando como hacer un juego estilo tower defence en el cual se generen aliados y enemigos cada cierto tiempo y al encontrarse se ataquen... probe con algo pero algunos no atacan si alguien me puede ayudar.... subo un ejemplo de lo que hice.... de antemano gracias... :GM8:
en la alarma de los subdito1 y subdito2 donde esta la condicion agregale:
|| (x==xprevious && y==yprevious)
te va a quedar asi:
if distance_to_object(subdito1)<30
|| (x==xprevious && y==yprevious)
{
bala = instance_create(x,y,Bala2)
bala.direction = direction
}
alarm[0]=90
He visto el ejemplo que diste, te daré algunos consejos para este tipo de juegos (Top Down) y te ayudare en lo que pueda con la IA.
Primero las cosas mas simples o esenciales:
-Los sprites de personajes (enemigo, jugador, etc) siempre es recomendable cambiarles la "mask" a un circulo perfecto del tamaño que tu estimes conveniente (para cambiar la mask, abre el sprite y ve a Modify Mask, si no sabes como cambiar la mask avísame ). Recuerda que la mask define la forma "original" del objeto, independiente de el dibujo que tenga, y en este caso sirve cambiarlas a un circulo perfecto para que cuando el angulo de la imagen gire no se quede trabado el objeto en un muro.
- los objetos como balas, bombas, o cosas que necesitan cierta precisión de su ubicación (por ejemplo un objeto que sea la cabeza de una persona, y otro que sea el cuerpo, quisiéramos que la cabeza este siempre en su sitio), los sprites de estos objetos deben tener su punto de origen en el lugar deseado, casi siempre es centrado como tu caso.
Vi tu ejemplo y algunas balas pasaban de largo porque tenían el punto de origen descalibrado. Recuerda siempre calibrar el punto de origen del sprite, es un error muy común que todos hemos tenido alguna vez.
(para centrar automáticamente el punto de origen ve al sprite y coloca "center", pera cambiarlo manualmente puedes hacer clic sobre la imagen o poner las coordenadas).
-las balas debes colocar que cuando colisionen se destruyan, para que causen daño una sola vez.
-si te fijas, mientras mas velocidad tengan las balas, mas grandes son los pixeles que se saltan (avanzan a saltos), y es por esto que algunas veces no llegan a su objetivo porque se lo saltan, en lo personal yo evito esto haciendo las balas mas largas, como las flechas. Es un problema que no le eh buscado otra solución, a ver si tu encuentras algo mejor (mi método funciona bastante bien ).
Si ocupas mi método, recuerda poner en el código en el evento create de la bala pone image_angle=direction,con esté solo cambiara su angulo al crearse y nada mas.
esto es para que la bala "mire" en la dirección de su trayectoria y no se vea tan mal.
uf esto es en cuanto a lo básico. XD
Cambie el sistema de las balas, ahora es uno mas simple y eficaz en el ejemplo que te daré al final veras los cambios, te dejare notas dentro de los eventos para que entiendas el "porque" de las cosas, así aprenderás mejor y mas rápido. :D
El error de que algunos súbditos no disparaban era cuestión de expresión de signos, tu usaste medidas de distancia, menor que o mayor que > o <, pero omitiste el igual = y la alarm[0] del subdito1 la pusiste dentro de la condición, por eso es que algunos casos no disparaban ya que la distancia era igual a el parámetro o no se cumplía la condición, lo corregí también.
Espero haberte ayudado. ;)
GALO agradesco mucho tu ayuda y tus consejos. Siempre he imaginado en mi mente un juego estilo tower defence a mi manera, soy un aficionado a los videojuegos y eso me a llevado a querer aprender a crear alguno por lo menos, se que aun me falta mucho por aprender en Game Maker, lo que se sobre programacion lo he aprendido en este foro, no tengo estudios sobre el tema (por lo mismo algunas veces me entra la frustracion),
intente varias cosas antes de consultar hasta que me rendi, al parecer este estilo de juegos requiere de mucho esfuerzo pero vere que me resulta..... tengo preparado un demo estilo shoter y espero presentarlo pronto al foro........ muy agracecido XD