Mostrar Mensajes

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

Mensajes - Luis En

46
Cita de: dixon2010 en Agosto 28, 2018, 08:24:41 PM
Amigo, prueba con este código. Es el mismo pero resumido.

[STEP EVENT]

sprite_index= Spr_H_Reposo
//Imagen Saltando -------------------------------------------------------------------
if(place_free(x, y+5))
{
sprite_index= Spr_H_Saltos; image_index= 1+(vspeed>0)
}


Aqui le estamos diciendo al objeto lo siguiente:
1.Que usará dos sprites (Reposo y Salto)
2.Que su sprite_index será por defecto Spr_H_Reposo
3.Que existen dos imágenes de salto (subida y caida)
4.Que se mostrará la imagen de caida solo cuando exista un movimiento hacia abajo.           

Mientras tengas una mascara definida no debe haber problemas

Ok, entonces eso reemplazaría a tooooodo el código que te pase?

El sprite de Salto tiene 3 subimágenes:

La subimagen 0: Imagen de Jump Attack
La subimagen 1: Imagen de Salto
La subimagen 2: Imagen de Caída

Basado en eso, igual seguiría poniendo esto?:

image_index= 1+(vspeed>0)  //Esto significa que mientras esté cayendo, cambiará a la subimagen, 2 y 3?
47
Hola! uso una máscara de un sprite distinto, que no es el de mi personaje. Supongo que así, esa máscara será para todos los sprites que cambie mi personaje no?.
Y sobre el punto de origen, no depende de la máscara que le asigne para todos no? ya que cada uno tiene su punto de origen por separado. Respecto a eso, ahora probaré modificando el punto de origen de algunos sprites, a ver si se soluciona, y te aviso (y)
48
Cita de: Luis En en Agosto 28, 2018, 06:33:29 PM
Mira bro, acabo de probarlo, poniendo y+2 y también y+5 como tú, y también lo puse para que no cambie a imagen salto cuando está detectando la plataforma móvil 5 pixeles abajo, y si, ahora ya no se queda pegado con la imagen de caída ni salto en la plataforma, pero ahora se queda pegado con la imagen de reposo, (la normal), la plataforma se detiene, y no puedo saltar.

Aquí te paso el código que tengo:


//Imagen Saltando -------------------------------------------------------------------

if !(global.jump_attack = true) || (global.jump_attack = true)             //Si el Jump Attack está APAGADO
    {
    if place_free(x, y+1)                   //Y está en el aire
        {
         if !place_meeting(x,y+5,Obj_Platf_Mov)         //Si NO detecta a 5 pixels abajo la PLATF MóVIL EN VERTICAL
            {
            if sprite_index= Spr_H_Reposo               //Si la imagen está en REPOSO
            sprite_index= Spr_H_Saltos; image_index= 1  //Será IMAGEN SALTO
               
                //Imagen Cayendo
               
                   
                    if vspeed=0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2  //Imagen Cayendo
                        }
                    if vspeed>0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2
                        }
                   
            }
            else
            {
            if sprite_index= Spr_H_Saltos
            sprite_index= Spr_H_Reposo
            }
         }
    }


*El "jump_attack" es una habilidad que tiene cuando agarra algo en especial, lo puse que pase todo lo de aquí cuando el jump_attack no está activado, ya que con jump_attack tendrá otra imagen.*

Espero me puedas ayudar (y)

Bro! acabo de borrar el else de al final, para que no tenga que cambiar, si no pasa lo del !place_meeting, y cuando sube a la plataforma, ya no se traba, pero cuando está encima de la plataforma y ésta sube, doy un salto, se vuelve a pegar, con la imagen de reposo, y al presionar las teclas de avanzar y retroceder (mientras está pegado) cambia a imagen de salto. Que extraño

Espero puedas ayudarme bro!
49
Mira bro, acabo de probarlo, poniendo y+2 y también y+5 como tú, y también lo puse para que no cambie a imagen salto cuando está detectando la plataforma móvil 5 pixeles abajo, y si, ahora ya no se queda pegado con la imagen de caída ni salto en la plataforma, pero ahora se queda pegado con la imagen de reposo, (la normal), la plataforma se detiene, y no puedo saltar.

Aquí te paso el código que tengo:


//Imagen Saltando -------------------------------------------------------------------

if !(global.jump_attack = true) || (global.jump_attack = true)             //Si el Jump Attack está APAGADO
    {
    if place_free(x, y+1)                   //Y está en el aire
        {
         if !place_meeting(x,y+5,Obj_Platf_Mov)         //Si NO detecta a 5 pixels abajo la PLATF MóVIL EN VERTICAL
            {
            if sprite_index= Spr_H_Reposo               //Si la imagen está en REPOSO
            sprite_index= Spr_H_Saltos; image_index= 1  //Será IMAGEN SALTO
               
                //Imagen Cayendo
               
                   
                    if vspeed=0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2  //Imagen Cayendo
                        }
                    if vspeed>0
                        {
                        sprite_index= Spr_H_Saltos; image_index= 2
                        }
                   
            }
            else
            {
            if sprite_index= Spr_H_Saltos
            sprite_index= Spr_H_Reposo
            }
         }
    }


*El "jump_attack" es una habilidad que tiene cuando agarra algo en especial, lo puse que pase todo lo de aquí cuando el jump_attack no está activado, ya que con jump_attack tendrá otra imagen.*

Espero me puedas ayudar (y)
50
Genial! Hola bro! tienes razón, así podría arreglarse, ahora estoy revisandolo, y estoy por ponerlo a prueba, añadí esto:


if !place_meeting(x,y+2,Obj_Platf_Mov)
   {
   (aquí el código de cambiar sprite cuando cae)
   }


Que opinas? aún estoy esperando que cargue, a ver si funciona.
51
Buenasss querida comunidad!
Espero que puedan ayudarme con éste problema.

Pasa que mi personaje cambia de sprite cuando está cayendo (vspeed =0 y vspeed > 0), entonces cuando se para en la plataforma en movimiento mientras ésta baja, sale el sprite de caída.

Y cuando está encima de la plataforma en movimiento mientras ésta sube, y doy un salto, al caer se queda pegado en la plataforma con el sprite de caída.

*Puede que haya un cruce de la velocidad de subida y caída del personaje con la velocidad de subida y bajada de la plataforma?

Espero me puedan ayudar.
52
Genial! Gracias! espero que me sirva! Lo acabo de descargar pero sabes porque está en formato .gmez?
Me parece raro.   ???
53
Buenas! querida comunidad!

Quisiera que me ayuden con esto, que por lo que he indagado en internet, es un problema que muchos tienen y no hay nada de información (al menos no encontré en ningún lado).

Espero puedan ayudar y de paso el tema queda abierto a otros usuarios que también tengan ese problema y puedan resolverlo al llegar aquí.
54
Genial! entendido! voy a revisar el código que me has pasado, para comprender todo mejor, y probaré como me resulta. Muchas gracias por la ayuda, si hay algún problema o me funciona, te escribiré bro. Lo probaré ahora mismo!
55
Cita de: BssString en Agosto 26, 2018, 10:47:17 PM
Hola Luis En

Exacto, aunque la dirección no es necesario hacerla cero, lo normal es que sea 270.
Tambié tienes que reactivar la gravedad cuando finalices la habilidad
if jump_attack = true { gravity = 0 }
Else { gravity = tu valor de gravedad }


Si usas image_xscale con valores -1 y 1, basta con que multipliques la image_xscale para calcular la x de destino.
x_destino=x+image_xscale*200
Así tomará el valor 200 o -200 respecto a la x del jugador y te evitas crear dos veces el código

Saludos

Aya! genial bro, lo acabo de probar, y me pasa esto: 1. Cuando no le cancelaba la gravedad cuando hace el jump attack, cuando presionaba "x" (que es para activarlo), solo me avanzaba unos pequeños pixeles a la derecha, pero solo horizontalmente, cada vez que presionaba "x" solo avanzaba un poquito (sin animación de caminar),2. Luego que le cancelé solo la gravedad (no gravity_direction) cuando se active "Jump attack", al presionar X se quedaba en el aire flotando, con la imagen de salto.

Mira, así lo he puesto todo:


Obj_player

//Event Create

global.jump_attack = false
x_destino = x+image_xscale*200     
y_destino = 200
spd = 10

//Event Step

if (keyboard_check_pressed(ord("X")))
    {
    global.jump_attack = true
    }

if (keyboard_check_pressed(ord("X")))
    {
    if global.jump_attack = true
        {
        var dir = point_direction(x,y,x_destino,y_destino)
        var dist = point_distance(x,y,x_destino,y_destino)
            if dist < spd
                {
                    x = x_destino;
                    y = y_destino;
                    global.jump_attack = false
                }
                else
                {
                    x += lengthdir_x(spd,dir)
                    y += lengthdir_y(spd,dir)
                }
        }
    }

if global.jump_attack = true//Se apagará la GRAVEDAD
{
gravity_direction = 270
gravity = 0
}
else
{
gravity = 0.5
}
56
Cita de: BssString en Agosto 26, 2018, 09:18:10 PM
Hola Luis En

Disculpa mi mediocre explicación.
x_destino e y_destino son variables que debes definir cuando pulsas la tecla de la habilidad especial.
En tu caso, si miras a la derecha sería:
x_destino=x+200
y_destino=y-200

Si miras a la izquierda:
x_destino=x-200
y_destino=y-200


Las funciones "lengthdir_x" y "lengthdir_y" de game maker te permiten obtener la componente horizontal y vertical de un vector, le debes dar una distancia y una dirección, es para evitar utilizar funciones trigonométricas que determinen cuantos pixeles avanzas en el eje X y cuantos en el eje Y.

Saludos

No te preocupes bro, se agradece que me brindes ayuda. Ahora estoy probandolo y cualquier cosa te digo. Por cierto, eso de quitarle la gravedad cuando se ejecute el "Jump_attack", sería en Step así:?


if jump_attack = true //Se apagará la GRAVEDAD
{
gravity_direction = 0
gravity = 0
}



Esto iría debajo de todo el código que me explicaste.

Y sobre x_destino, mi personaje al cambiar de dirección (izquierda a derecha) cambia con image_xscale, si es así ya no tendría que escribir un: x_destino para cuando salte a la derecha, y otro para que salte a la izquierda?

57
Cita de: BssString en Agosto 25, 2018, 01:27:34 AM
Hola

En realidad spd es para controlar la velocidad a la que llegas al destino, pero puedes simplemente colocar un número cualquiera en reemplazo

Saludos
Hola bro, ahora lo estoy probando con más calma, y tengo unas dudas:
- Sobre: x_destino, y destino. Es una variable donde puedo poner por ejemplo 200, si lo que quiero es que se desplace 100 pixeles en la dirección a donde salto?

- Y sobre -> lengthdir_x(spd,dir) <- me podrías explicar que significa?

Gracias por responder a mi tema bro! Me ayudas y te pongo en los agradecimientos del juego :D
58
Cita de: BssString en Agosto 24, 2018, 09:21:45 PM
Hola Luis En

Lamentablemente no funciona así...
Primero, la función "keyboard_check" se activa por cada step que mantienes pulsada la tecla, cuando uno pulsa y suelta una tecla, se activará el evento por al menos 5 steps, lo que manda a tu personaje a 200*5 = 1000 pixeles de distancia.
El evento correcto es "keyboard_check_pressed", eso hará que aunque mantengas apretado el botón, el código se ejecute sólo una vez.

Te recomiendo hacer los siguientes pasos:
1- Cuando pulsas S, Activa una variable llamada "salto" o "habilidad" o como quieras llamarle y activa 2 variables que indiquen la "x de destino" y la "y de destino".
2- Evita que el player se mueva libremente (incluso cancela la gravedad) si es que la variable "salto" o "habilidad" está activa.
3- El siguiente código moverá al player a la posición que indiques como destino a una velocidad "spd"
ojo: para que funcione debes haber definido antes las variables "spd, x_destino e y_destino" (tu las puedes llamar como quieras)
if salto = true { //o habilidad o como quieras
var dir = point_direction(x,y,x_destino,y_destino)
var dist = point_distance(x,y,x_destino,y_destino)
if dist < spd { x = x_destino; y = y_destino; salto = false } //desactiva la variable "salto" o "habilidad" o como la hayas llamado para que el player vuelva a moverse como lo haría normalmente
else {
x += lengthdir_x(spd,dir)
y += lengthdir_y(spd,dir)
}
}


Eso moverá al player en línea recta hacia las coordenadas de destino a una velocidad "spd".
Una vez que llegue a su destino, se desactiva la variable salto para que tu player se comporte de forma normal.

Saludos

Ahhhhhh! genial compa! ahora lo pruebo y te digo si me funciono! Pero no entiendo lo de "spd" es el nombre de una variable que debo crear?. Mi personaje está en el suelo y el salto lo tiene que hacer en diagonal, servirá también?

59
Buenas querida comunidad!

Tengo un problema, pasa que quiero hacer que cuando se presione una tecla, por ejemplo (tecla "S") el personaje de un salto hacia el lado hacia donde está mirando. Como un salto de ataque solo cuando presiono esa tecla. Probé con:

[gml]
keyboard_check(ord("S"))
{
     x += 200
     y += 200 
}

//Para que el personaje de un salto en diagonal hacia ese punto y al llegar a ese punto, caiga normal (en estado normal (reposo))
Pero cuando lo presiono, el personaje desaparece

¿Me podrían ayudar con eso?


60
Cita de: MasterMaker en Agosto 23, 2018, 01:56:46 AM
Cita de: Luis En en Agosto 23, 2018, 01:24:33 AM
Cita de: MasterMaker en Agosto 23, 2018, 12:03:14 AM
Aquí esta el ejemplo, tiene 3 vidas.
Básicamente lo que hice fue que cree una variable global para la vida, y después la use para cambiar el index del sprite de la vida

Genial!!! bro!! si funciono, como no se me ocurrió de que la variable al almacenar un número, podía ir cambiando el número de las subimágenes del sprite al dibujarlo mientras cambiaba de valor!! Muchas gracias por eso!! No hay duda que estarás en mis agradecimientos bro! Gracias, si tengo alguna duda te puedo consultar?   :D

De nada, si claro

Gracias compa!  XD