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 - jacksu456

1
Cita de: Silver_light en Marzo 15, 2015, 06:55:28 PM
Citar
Y cual seria el codigo para la animacion de quedarse parado en un solo lugar sin moverse?

Basicamente lo que deberías hacer es verificar si no se ha presionado las teclas de dirección y, por ejemplo esta en el suelo debería cambiar al sprite de estar en el lugar, algo como esto, obviamente adaptandolo a tu juego:

[GML]

if (keyboard_check_released(ord('A') && keyboard_check_released(ord('D'))
   if (place_free(x,y+1) == false)
      if (sprite_index != spr_personaje_parado_en_el_suelo)
         sprite_index = spr_personaje_parado_en_el_suelo;

[/GML]

Por lo segundo intenta cambiar las expresiones:
key_right = keyboard_check(ord("D"));

por

key_right = keyboard_check(ord('D'));

Notese que cambie las doble comillas " " por comillas simples ' '.

Mira lo que al final hice, y sirvio:
[GML]
if hsp > 0
{
sprite_index = spr_playerRR;
}

if hsp < 0
{
sprite_index = spr_playerRL;
}

if hsp == 0 && vsp == 0
{
sprite_index = spr_playerI;
}

if vsp > 0 && hsp > 0
{
sprite_index = spr_playerJR;
}

if vsp > 0 && hsp < 0
{
sprite_index = spr_playerJL;
}

if vsp < 0 && hsp > 0 && !place_meeting(x,y+18,obj_wall)
{
sprite_index = spr_playerJR;
}

if vsp < 0 && hsp < 0 && !place_meeting(x,y+18,obj_wall)
{
sprite_index = spr_playerJL;
}
[/GML]

Pero ahora mira lo que ocurre cuando voy cayendo y justo cuando voy a llegar al piso estoy presionando las teclas de izquiera o derecha : https://www.youtube.com/watch?v=f72D39OkETI

Un video de mi proyecto en privado

2
Cita de: Silver_light en Marzo 15, 2015, 05:36:12 PM
La variable que se utiliza para controlar el sprite del objeto actual al cual se desea cambiar la animacion es:
[GML]
sprite_index
[/GML]

Entonces si quisieras cambiar el sprite, en un evento Step, por ejemplo:
[GML]
key_right = keyboard_check(ord("D"));

if (key_right)
   if (sprite_index != spr_personaje_corriendo_hacia_la_derecha) // Esta linea es necesaria, de lo contrario el sprite se iniciaria infinitamente y daría la sensacion de que es una imagen estática
      sprite_index = spr_personaje_corriendo_hacia_la_derecha;
[/GML]

La variable "image_index" que mencionas es para cambiar la subimagen dentro de un sprite determinado.
Entonces suponiendo que el sprite de "spr_personaje_corriendo_hacia_la_derecha" tiene 10 subimagenes, para colocar la animacion al final bastaría con:

[GML]
image_index = 9; // Nueve porque las subimagenes de los sprites van de 0 a 9, haciendo un total de 10
[/GML]

Luego la misma lógica aplicaría para cualquier animacion, por ejemplo la de salto y cualquier otra que desées hacer.
Un ejemplo para cambiar el sprite de salto podría ser:
[GML]
key_up = keyboard_check(ord("W")); // se presiona la tecla de salto

if (key_up )
{
   if (sprite_index != spr_personaje_saltando_hacia_la_derecha)
      sprite_index = spr_personaje_saltando_hacia_la_derecha;

   vspeed = -10;
}
[/GML]

Finalmente, como digo, la misma lógica puede aplicarse para otras animaciones, como colisiones o al presionar la tecla izquierda o bien "A", siguiendo el código.

Y por cierto, no se porque, si lo hice bien o mal, pero no me esta funcionando, mira chequea el codigo STEP que tengo:

[GML]///Codigos de movimientos y cosas asi.

key_right = keyboard_check(ord("D"));
if (key_right)
    if (sprite_index != spr_playerRR)
        sprite_index = spr_playerRR;
       
key_left = -keyboard_check(ord("A"));
if (key_left)
    if (sprite_index != spr_playerRL)
        sprite_index = spr_playerRL;

key_jump = keyboard_check_pressed(vk_space);
//

//

move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;

if (place_meeting(x,y+1,obj_wall))
{
    jumps = jumpsmax;
}

if (key_jump) && (jumps > 0)
{
    jumps -= 1;
    vsp = -jumpspeed;
}

if (key_jump) &&  (place_meeting(x+1,y,obj_wall) || place_meeting(x-1,y,obj_wall))
{
    vsp = -jumpspeed;
}

// X

if (place_meeting(x+hsp,y,obj_wall))
{
    while(!place_meeting(x+sign(hsp),y,obj_wall))
    {
        x+= sign(hsp);
    }
    hsp = 0;
}

// Y

if (place_meeting(x,y+vsp,obj_wall))
{
    while(!place_meeting(x,y+sign(vsp),obj_wall))
    {
        y+= sign(vsp);
    }
    vsp = 0;
}

//

x += hsp;
y += vsp;

//
[/GML]

Cuando uso este codigo el personaje solo hace la animacion de correr a la derecha para saltar, quedarse parado, correr a la izquiera, o sea siempre la hace.
3
Cita de: Silver_light en Marzo 15, 2015, 05:36:12 PM
La variable que se utiliza para controlar el sprite del objeto actual al cual se desea cambiar la animacion es:
[GML]
sprite_index
[/GML]

Entonces si quisieras cambiar el sprite, en un evento Step, por ejemplo:
[GML]
key_right = keyboard_check(ord("D"));

if (key_right)
   if (sprite_index != spr_personaje_corriendo_hacia_la_derecha) // Esta linea es necesaria, de lo contrario el sprite se iniciaria infinitamente y daría la sensacion de que es una imagen estática
      sprite_index = spr_personaje_corriendo_hacia_la_derecha;
[/GML]

La variable "image_index" que mencionas es para cambiar la subimagen dentro de un sprite determinado.
Entonces suponiendo que el sprite de "spr_personaje_corriendo_hacia_la_derecha" tiene 10 subimagenes, para colocar la animacion al final bastaría con:

[GML]
image_index = 9; // Nueve porque las subimagenes de los sprites van de 0 a 9, haciendo un total de 10
[/GML]

Luego la misma lógica aplicaría para cualquier animacion, por ejemplo la de salto y cualquier otra que desées hacer.
Un ejemplo para cambiar el sprite de salto podría ser:
[GML]
key_up = keyboard_check(ord("W")); // se presiona la tecla de salto

if (key_up )
{
   if (sprite_index != spr_personaje_saltando_hacia_la_derecha)
      sprite_index = spr_personaje_saltando_hacia_la_derecha;

   vspeed = -10;
}
[/GML]

Finalmente, como digo, la misma lógica puede aplicarse para otras animaciones, como colisiones o al presionar la tecla izquierda o bien "A", siguiendo el código.



Y cual seria el codigo para la animacion de quedarse parado en un solo lugar sin moverse?
4
Ok, como dice el titulo, quiero que mi personaje al caminar a la derecha, ejemplo:     key_right = keyboard_check(ord("D"));     Que cuando presione la D se reproduzca el sprite de animacion de correr, y asi viceversa, a la izquierda, y cuando este sin moverme en absoluto, hacer la animacion principal que es de simplemente quedarse ahi (La cual tambien le tengo el sprite), y tambien para saltar, se que tiene que ver algo con image_index o algo asi, pero necesito ayuda, y si tambien me pueden ayudar a saber el codigo para cuando colisiono con una pared de lado haga una animacion, estaria muy agradecido, gracias.