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!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Fashion_Trozos

Páginas: 1 2
1
Preguntas y respuestas / Re:Mi personaje no ataca cuando esta parado
« en: Junio 04, 2019, 04:09:54 pm »
No, nada es complicado de hacer cuanto a lógica.  En realidad el problema viene cuando tienes que hacer calculos matematicos, y dibujar con surfaces(?

Ya, en serio, no es complicado si tienes anotado el flujo de acciones. Claramente, no se puede tener una idea en la cabeza y simplemente ponerse a escribir código esperando que funciones. Primeramente porque se te olvidan muchos casos en los que podria o no estar aplicandose.
En todo caso, lo mejor y mas recomendable sería escribir maso omenos en papel el flujo que debiera tener la logica del juego. Al menos en parte, la que estas intentando implementar.

Yo pienso que el problema no está en el script de ataque sino más bien, en que sprite estás colocando luego de que se realiza el ataque o bien, el sprite que colocas luego de que se deja de pulsar las teclas de direccion.

En cualquier caso, si quieres pasar el proyecto, usa el formato "yyz" puesto que es ese el que trae los recursos anexados. El "yyp" es solo la estructura del proyecto, osea , le faltan los sonidos, los sprites, etc.
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

2
Preguntas y respuestas / Re:Mi personaje no ataca cuando esta parado
« en: Junio 03, 2019, 04:33:15 pm »
Como no lo especifícas asumo que está todo en el evento step.
El problema es ese, que al estar en el evento step, tanto como presionas la barra espaciadora para atacar, el siguiente step evalua las condiciones de las teclas direccionales WASD.

Hmmm yo para arreglaro usaría una variable que indicase cúando ataca o no:

if keyboard_check_pressed(vk_space) and estado = estado_personaje.caminando_pico
{
    estado = estado_personaje.atacando
        esta_atacando = true
}

Eso indicaría que está atacando, por lo que no debería reproducirse otra animacion sino, unicamente la de atacar:

if (not esta_atacando) // si no se esta atacando cambiar a los estados habituales
{
    if (keyboard_check(ord("S")))
    or (keyboard_check(ord("W")))
    or (keyboard_check(ord("D")))
    or (keyboard_check(ord("A"))) {
        estado = estado_personaje.caminando
        }
        else{
            estado = estado_personaje.parado
        }

    if pico_equipado == true {
    if (keyboard_check(ord("S")))
    or (keyboard_check(ord("W")))
    or (keyboard_check(ord("D")))
    or (keyboard_check(ord("A"))) {

        estado = estado_personaje.caminando_pico
        }else{
            estado = estado_personaje.parado_pico
            }
        }
}

Ya luego cuando termine la animacion de atacar deberías cambiar la variable a false.
Imagino que el evento "Animation end" es el evento apropiado.
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

3
Preguntas y respuestas / Re:Mi personaje no ataca cuando esta parado
« en: Mayo 31, 2019, 12:23:38 am »
El editable es el archivo que editas para hacer el juego. El gmk? ya no me acuerdo que extension tiene xD

La verdad que es una buena idea eso de re-factorizar el código. A lo mejor más limpio y entendible tal vez.
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

4
Preguntas y respuestas / Re:Mi personaje no ataca cuando esta parado
« en: Mayo 29, 2019, 07:01:37 pm »
Lo mas probable es que, hay parte de codigo en el evento step que cambie constantemente el estado por eso solo cambia en una fraccion de segundo.

Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

5
Preguntas y respuestas / Re:Problema con enumerador
« en: Mayo 27, 2019, 08:17:37 pm »
De hecho, es posible. Solo que no debe llevar parentesis puesto que, si los tiene se entiende como una llamada a método.
Sin los parentesis contendría la ID de la funcion dentro de, supongo, la tabla o el stack:

enum FUNC{
    saludar = scr_hola,
}

hablar = FUNC.saludar;

script_execute(hablar)

Aunque no se porqué querrías complicarte tanto el código  XD
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

6
Hola y muchas gracias por responder. Quieres decir que con la linea del script de "Ataque/picando" que pone:

Código: [Seleccionar]
if image_index = 4 {

atacando = false;

}

No es suficiente para parar el ataque, no?

Voy a intentar hacer algunos cambios a ver si puedo afinar mas mi pregunta, es que dudo tanto que no se que preguntar

El image_index no solo puede ser 1, 2, 3, 4, etc, sino que es más probable que tenga un decimal, ya que va aumentando en decimales. Podrias hacer algo como:
Código: [Seleccionar]
if floor(image_index) = 4 {

atacando = false;

}

Esto lo que hace es redondear el valor de 'image_index' hacia abajo, lo que pasa es que el código 'atacando = false;' se ejecutará varias veces, pero creo que no debería afectar negativamente en tu caso.

Un Saludo!


Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

7
Preguntas y respuestas / Re:Duda a la hora de equipar a mi personaje
« en: Mayo 16, 2019, 09:22:19 am »
Un método si vas a usar armaduras, herramientas y cosas así sería usando Spine, no se que opinarán los demás.

Un saludo!
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

8
Lo que falta es una condición para que la variable atacando se haga false. Se podría hacer false en el evento End Animation o en una Alarm.

No está bien definido el código de cada estado. Puedes crear un script para cada estado, en cada estado se asignan sprites diferentes y los controles pueden ser diferentes. Por ejemplo, en estado normal el personaje responde al botón para iniciar el ataque, pero cuando está atacando ya no debe responder a ese botón hasta que termina de atacar. En step coloca un switch que elija que script ejecutar:
switch (estado) {
  case 0: sc_estado_normal();
  case 1: sc_estado_atacando();
}
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

9
Preguntas y respuestas / Re:Como picar piedra?
« en: Mayo 15, 2019, 03:25:14 am »
Al final me ha ido bien con lo de if instance_exists

Código: [Seleccionar]
if keyboard_check_pressed(vk_space) {
ob_roca.vida_roca--
}

if ob_roca.vida_roca = 0 {
with other instance_destroy()
if instance_exists(ob_roca) {ob_roca.vida_roca +=4}
}

que bueno que te haya funcionado!, me alegro
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

10
Disculpa por eso, es que uso GM8 y en en el no se puede poner ++ o --, o muchas otras mas cosas que en GMS y GMS2 si se pueden.

"Realmente se que estoy haciendo un estropicio en cuanto al código, en cuanto aprenda un poco mas borraré el proyecto y empezaré uno nuevo heheh."
Esa es una buena idea, vas a ver que te hara mas facil y rapido escribir codigo. Intenta varias soluciones a un problema, puedes llegar a reducir bastante el codigo que escribes.
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

11
Preguntas y respuestas / Re:Como picar piedra? [SOLUCIONADO]
« en: Mayo 15, 2019, 12:00:10 am »
Para tener un poco mas claro la diferencia entre objetos e instancias, un pequeño texto de un articulo:

Diferencia entre instancias y objetos
En realidad, no colocamos los objetos en una room para que se ejecuten. Lo que colocamos son instancias de esos objetos. Y, ¿qué es una instancia en Game Maker? Podemos decir que una instancia es una copia de ese objeto, una plantilla con todas las características que pueden hacer. Lo comento porque hay cosas que se pueden hacer con objetos y cosas que se pueden hacer con instancias, ya que aunque lo parezca no es lo mismo.
¿Porqué es diferente? Cuando decimos que algo afecta a una instancia, afecta solo a esa copia en particular que se ha creado en la room. Si existen otras instancias del mismo objeto, a esas no les afecta en nada. Cuando decimos que algo afecta a un objeto, le afectará a todas las instancias que hay en la room en ese momento.

(www.aprendegamemaker.com/introduccion-objetos-game-maker-studio/)
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

12
Preguntas y respuestas / Re:Como picar piedra?
« en: Mayo 14, 2019, 05:49:14 pm »
En el primer codigo, puede que dé error porque al ser destruida la ultima roca, el programa sigue buscando si hay mas, me paso algo parecido, puedes intentar agregar
Código: [Seleccionar]
if instance_exists(ob_roca) ocurra lo siguiente.

Una manera que se me ocurre , seria crear un "pico", puede ser invisible o visible dependiendo de lo que busques.
entonces en el evento step del jugador colocamos:

Código: [Seleccionar]
if keyboard_check_pressed(ord("Q"))
{
pico = instance_create_layer(x,y,"Player",obj_pico)
}

if keyboard_check_released(ord("Q"))
{
instance_destroy(pico)
}

para las rocas:

en evento create:
Código: [Seleccionar]
invulnerable = false
t=0

step event:

Código: [Seleccionar]
if invulnerable == true{
t ++
image_alpha = 0
if t ==10{invulnerable = false;t=0;image_alpha=1}
}
if hp <= 0 {instance_destroy()}
en esta parte la roca parpadeara para que asi la colision no le reste hp en cada frame, y solo lo haga al dejar de ser "invulnerable"

y en collision con el pico seria

Código: [Seleccionar]
if invulnerable == false {hp-=1;invulnerable = true}
el hp lo puedes colocar en las definiciones de variables, asi puedes cambiar mas facilmente cada variable su hp:


Por ultimo creamos el obj_pico, este no es necesario que tenga nada.




Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

13
El principal problema es que estas usando una variable global para controlar la vida de las rocas global.vida_piedra, y esta afecta a todas las instancias de ese objeto.
Lo que debes hacer es crear la variable local vida=4
Si vas a poner el codigo en el evento de colision, hay codigo que esta sobrando:
if mouse_check_button_pressed(mb_left) ///si cuando se colisiona con la roca se presiona el raton
  {
   with(other) ///hace referencia a la roca con la que esta colisionando
     {
      vida-=1 ///resta 1 a la variable vida de la roca
      global.cantidad_piedra+=1 ///agrega 1 a la variable global piedra
      if vida<=0 {instance_destroy()} ///si la vida de la roca llega a 0 se destruye
     
     }
  }
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

14
Preguntas y respuestas / Re:Mejor manera de crear fondos?
« en: Mayo 09, 2019, 06:16:33 am »
Se agregan desde la lista de capas en el editor de rooms:

Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

15
Preguntas y respuestas / Re:Duda a la hora de equipar a mi personaje
« en: Mayo 07, 2019, 09:12:35 pm »
En ambos casos que dices, los objetos estan separados del personaje, en Forager es mas evidente ya que este es mas simple y no tiene muchas animaciones.
En Stardew Valley el personaje tiene mas animaciones, pero para diferentes objetos puede compartir la misma animacion, por ejemplo cuando usa un hacha o un pico.
En otros juegos por ejemplo, separan las piernas del resto del cuerpo, solo una animacion para las piernas pero diferentes para los brazos(diferentes tipos de armas).
Si el personaje no va a cambiar, digamos que siempre va a tener la misma ropa, podrias hacer la misma animacion con cada uno de los objetos que pueda usar, visualmente quedara mejor.
Elijas la forma que elijas de hacerlo , preguntate si valdra la pena el tiempo y esfuerzo en hacerlo de esa manera.
Los siguientes usuarios dieron las gracias a este tema: Fashion_Trozos

Páginas: 1 2