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

76
Cita de: MasterMaker en Agosto 22, 2018, 07:30:38 AM
Cita de: Luis En en Agosto 22, 2018, 07:21:21 AM
Cita de: MasterMaker en Agosto 22, 2018, 07:17:41 AM
Cita de: Luis En en Agosto 22, 2018, 07:02:11 AM
:o Yo ni sabía que había ese concurso  :o

Y por tu culpa nadie gano :(

Jajajaja, pero si gano el único que envío su juego, ahí abajo dijeron eso

Eran 10 dolares por participar, pero el ganador se llevaba 100 dolares, pero como no hubieron suficientes participantes no hubo ganador

Ahhh! pues no hicieron una buena difusión, porque aquí somos muchos y éste concurso hubiera estado lleno de juegos! no hicieron bien con la difusión u_u

¿Cuándo otro concurso?
Esta vez difundirlo bien, no hay que perder la esperanza!
77
Cita de: MasterMaker en Agosto 22, 2018, 07:17:41 AM
Cita de: Luis En en Agosto 22, 2018, 07:02:11 AM
:o Yo ni sabía que había ese concurso  :o

Y por tu culpa nadie gano :(

Jajajaja, pero si gano el único que envío su juego, ahí abajo dijeron eso
78
Buenas querida comunidad!!

Como dice el título, quiero saber como se haría para que en el HUD que está dibujado en el evento Draw se logren reproducir las animaciones respectivas de cada sprite!!

¿¿Alguna idea??
79
 :o Yo ni sabía que había ese concurso  :o
80
Cita de: Hezz en Agosto 12, 2018, 07:32:09 AM
La declaración de la variable la haces con la funcion var en el evento step. Esa variable no se guarda y se elimina después de ejecutarse el código en el evento que hiciste. No se puede acceder desde otro objeto, y son prácticas para no ocupar memoria RAM. Podés declarar una variable desde el evento create, ya que es lo mismo, porque en el evento step va a estar constantemente creándose con la función.

La función sign lo que hace es tomar un valor "x" y devolver su signo. Ejemplo:
sign(-48); <== -1
sign(72); <== 1
sign(0); <== 0

Preguntá lo que quieras, ya que para eso es el foro. Uno no nace sabiendo XD

Ajam! lo que aún no entiendo es lo del "sign", como es eso de "devolver su signo"? el signo de x que devolvería sería 0?
y tampoco entiendo lo del <== -1, etc
Si, gracias!! voy a preguntar todo lo que pueda, espero que me contesten tambien xD
Mil gracias por molestarte en contestar bro  :-[
81
Cita de: Zappier en Agosto 12, 2018, 07:33:59 AM
Muchas Gracias en verdad, solucionaste mi problema :D

Hola Zappier!!
¿En qué evento colocaste ese código que te dio Hezz?
82
Cita de: Hezz en Agosto 12, 2018, 07:33:58 AM
Te dejo un ejemplo para que lo veas más claro.

Dejé separado por comentarios al código y el personaje tiene una mask.
Espero que te ayude!!

Genial!!!!! Ahora lo reviso y te aviso como me fue!!! :D
83
Cita de: Hezz en Agosto 12, 2018, 07:10:42 AM
La forma en la que yo lo hago es creando una variable nueva y sumando a todos los objetos que quiero detectar, y luego hacer un sign al resultado.
var suma;
suma = sign(place_meeting(x, y+1, [objeto1] ) + place_meeting(x, y+1, [objeto2] ) + place_meeting(x, y+1, [objeto3] ))


Entonces, si detecta alguno de los objetos la variable es 1 o más, con el sign es 1, y 1 es lo mismo que true, entonces:
if (suma) { vspeed = -6; }

Aja! con una variable, genial!! Con las variables todo es más práctico no? y dime, esa es una variable local o de instancia? Y eso en que EVENT lo colocaría? COLLISION? o CREATE del personaje principal? Y que significa "Sign"?
Disculpa si soy muy preguntón! xD es que quiero que me quedé bien claro! Y gracias por responderrrr!! :D
84
Cita de: Hezz en Agosto 11, 2018, 05:19:35 PM
Hola Luis En! Creo que podés intentar esto:


//Colision horizontal
if (place_meeting(x+hspeed,y,obj_hitbox)){
    while (!place_meeting(x+sign(hspeed),y,obj_hitbox)) {x += sign(hspeed);}
    hspeed = 0;
}

//Colision vertical
if (place_meeting(x,y+vspeed,obj_hitbox)){
    while (!place_meeting(x,y+sign(vspeed),obj_hitbox)) {y += sign(vspeed);}
    vspeed = 0;
}


Analizando el código (hortizontal):

if (place_meeting(x+hspeed,y,obj_hitbox))
Esto detecta si en x + la velocidad horizontal hay un obj_hitbox. Entonces:

while (!place_meeting(x+sign(hspeed),y,obj_hitbox)) {x += sign(hspeed);}
Mientras no esté tocando al objeto en x + sign(hspeed) [Lo que hace sign es tomar un número, en este caso hspeed, y devolver su signo. Si hspeed es -3, entonces devuelve -1.], entonces a x le añade 1 en la dirección del hspeed. Luego:

hspeed = 0;
Cambia la velocidad horizontal a 0.

Sucede lo mismo en la vspeed.

Este código tiene un error en las colisiones diagonales, pero siempre fue el que yo usé.
Espero que te sirva!

Holaaaaaa! lo acabo de probar, y el personaje se me queda pegado al suelo, porque pasa eso? Indagando por ahí, probé en crear un nuevo sprite (Spr_Mask) basado en la silueta del personaje que tengo (Spr_Roboto) y ese nuevo sprite (Spr_Mask) lo establecí como "máscara" del Spr_Roboto, y el problema se soluciono en un 97%, ahora el único pequeño detalle erróneo que tengo es que cuando me acerco a los lados del objeto sólido pero solo desde la izquierda, mientras mantengo presionado la tecla "left" el personaje al colisionar con el bloque "piso" da un pequeño rebote, y mientras lo mantenga presionado "left" se pega pero dando rebotes! Tienes alguna idea de porque sucede eso? No sé si me explique bien XD
85
Cita de: Hezz en Agosto 11, 2018, 04:47:44 PM
Hola Luis En! Podrías intentar esto:

En el evento keyboard:
if (place_meeting(x, y+1, [objeto] )) { vspeed = -6; }

Espero que te sirva! :D

Geniaaaaal!!! Graciassss!!! me sirvió perfectamente!! :D
Ese código que me pasaste es para que reconozca la tecla "saltar" solo cuando toque el sólido "piso" verdad? y ¿cómo haría para que funcione para cada objeto solido? tendría que escribir un código para cada objeto solido? o una máscara para todos los objetos sólidos? :o o también podría utilizar el "Parent" no? hacer hijos del objeto "piso" a todos los otros objetos.
86
Buenas compañeros, mi problema es que al presionar la tecla de saltar (space) cuando lo hago con:

Keyboard: El personaje sigue subiendo mientras mantengo presionado 'space'.

Y cuando lo hago con:

Key_Press: El personaje sigue saltando cuando estando en el aire presiono 'space', y así voy presionando y presionando 'space' en el aire y sigue subiendo.

¿Cómo puedo hacer para que solo funcione la tecla 'saltar' cuando solo se colisione con el sólido 'suelo'?

EVENT KEY_PRESS (Space)
[gml]
if place_free(x,y + -1)
    {
    vspeed= -6
    }
[/gml]

:-\ :-\ :-\
87
Compañeros tengo problemas con mi personaje:

1. Cuando colisiona con el bloque (suelo) pero en los lados, por ejemplo si hay escalones, se queda en las esquinas del bloque parpadeando animaciones entre salto y caminar.

2. Cuando me pego a un lado del bloque de colisión y mientras mantengo presionado "avanzar" presiono "saltar", el personaje da un pequeño brinco pero automaticamente se empuja hacia el suelo (posición donde estaba)

Éste es el código que estoy utilizando:

EVENT COLLISION
[gml]
move_contact_solid(direction, 12)
vspeed= 0;
[/gml]

EVENT KEY_PRESS
[gml]
move_contact_solid(direction, 12)
vspeed= 0;
[/gml]

No sé si lo explique bien, pero aquí les dejo una muestra de como se ve el problema al probarlo y una imagen de la máscara del personaje y del objeto sólido.

Espero puedan ayudarme.
88
Cita de: 3dgeminis en Agosto 10, 2018, 07:48:09 PM
Eso es debido a que en la colision no detenes la velocidad vertical si no que la igualas a 12 cuando deberia ser 0
[gml]
move_contact_solid(direction, 12)
vspeed= 0;
[/gml]
Algo que note, es que usas keyboard_check_pressed siendo una funcion que se ejecuta una vez para mover al personaje, lo mejor seria usar keyboard_check.

Genial! muchas gracias!! ese era el error!
Y sobre el keyboard_check_pressed lo utilizo porque pensé que solo se activaba cada vez que presione avanzar, en cambio keyboard_check al presionar una vez se seguirá desplazando así ya no lo mantenga presionado, no era así? o me estoy enredando? xD
89
Buenas compañeros, he tenido problemas con mi personaje al ponerle gravedad. Pasa que al chocar con el objeto de colisión (suelo), presiono avanzar pero solo se reproduce la animación de caminar, y se queda en el mismo lugar sin desplazarse.

¿Me podrían ayudar a saber porque pasa eso? Recién estoy aprendiendo el GML.
Aquí les dejo el código que estoy utilizando:

EVENTO STEP
[gml]
// GRAVEDAD

if place_free(x,y + 1)
    {
    gravity_direction= 270
    gravity= 0.5
    }
    else
    {
    gravity_direction= 270
    gravity= 0
    }

if (vspeed> 12)
    {vspeed= 12}   

//CAMINAR

if keyboard_check_pressed(vk_left)
    {
    hspeed= -5;
    image_xscale= -1
    image_speed= 0.5
    }
if keyboard_check_pressed(vk_right)
    {
    hspeed= 5;
    image_xscale= 1
    image_speed= 0.5
    }
if keyboard_check_released(vk_left)
    {
    hspeed= 0;
    image_xscale= -1
    image_speed= 0
    image_index= 0
    }
if keyboard_check_released(vk_right)
    {
    hspeed= 0;
    image_xscale= 1
    image_speed= 0
    image_index= 0
    }
[/gml]
EVENTO COLLISION
[gml]
move_contact_solid(direction, 12)
vspeed= 12;
[/gml]