Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Sistema de Batalla [04/08/2019]  (Leído 485 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado NU597

  • Habitual
  • *
  • Puntos: 22
  • Mensajes: 11
    • Ver Perfil
en: Agosto 04, 2019, 06:34:59 pm
Hola otra vez hoy vengo con una duda.
de como hacer eso de ataque y defenza en game maker
osea eso de los RPG cuando atacas a un enemigo tu ataque es aleatorio si va a ser 7, 8 o 9
supongamos que tenemos el ataque del player

Estadisticas del Player:
HP:80 DEF: 20 ATK: 10 POWER:15

y las estadisticas del Enemigo:
Estadisticas del Enemigo:
HP:20 DEF: 7 ATK: 5 POWER:3

Expliquenme que tengo que hacer para que cuando ataco al enemigo mi ataque se divida en la defensa del enemigo

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Silver_light

Respuesta #1 en: Agosto 04, 2019, 07:23:01 pm
Bueno, que puedo decir, casi que te respondiste solo  XD
Si quieres dividir el ataque del jugador con la defensa del enemigo, solo debes aplicar la fórmula.
danio = obj_jugador.ataque / defensa;
vida -= danio;
Y variaría si se manejas decimales o no, si son redondeados a enteros:
danio = floor(obj_jugador.ataque / defensa);
vida -= danio;

Y claro, ya vendría el hecho de cómo tienes implementado el motor como tal para saber si va en un evento de colision o en una alarma, por ejemplo.

 
Los siguientes usuarios dieron las gracias a este tema: NU597


Desconectado NU597

  • Habitual
  • *
  • Puntos: 22
  • Mensajes: 11
    • Ver Perfil
Respuesta #2 en: Agosto 04, 2019, 07:29:39 pm
muchas gracias igual aun que no me di cuenta que me respondi solo XD
Bueno, que puedo decir, casi que te respondiste solo  XD
Si quieres dividir el ataque del jugador con la defensa del enemigo, solo debes aplicar la fórmula.
danio = obj_jugador.ataque / defensa;
vida -= danio;
Y variaría si se manejas decimales o no, si son redondeados a enteros:
danio = floor(obj_jugador.ataque / defensa);
vida -= danio;

Y claro, ya vendría el hecho de cómo tienes implementado el motor como tal para saber si va en un evento de colision o en una alarma, por ejemplo.

 


Desconectado Marth

Respuesta #3 en: Agosto 04, 2019, 08:06:49 pm
Veo que tienes un parametro llamado "power".
¿Es la potencia del ataque que usara cada combatiente?
Porque si divides en bruto sus estadisticas, veo que apenas os hareis 2 o 3 puntos de daño.
En pokemon, usar ataque/defensa tiene sentido, al ser obligatorio atacar con técnicas, pero si en tu juego hay ataques estandar, la cosa es más compleja.
Igual puedes hacer que la formula sea algo como (nivel+potencia)*ataque/defensa. El ataque básico tendria potencia 0, y otros movimiento tendran valores superiores.
Recomiendo que en vez de redondear con floor, uses ceil, ya que redondeara a la alta y garantizara que hagas como mínimo un punto de daño.

Si piensas que los usuarios de tus programas son idiotas, sólo los idiotas usarán tus programas.

-Linus Torvalds ("Padre" de Linux)-