Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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: Dejar totalmente parado el personaje.  (Leído 676 veces)

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

Desconectado Cher3

en: Mayo 27, 2019, 06:54:57 pm
¡Buenas!Llevo varios días rallado con esto y quería ver si alguien podría ayudarme, tengo el codigo del movimiento del personaje y de las colisiones, he programado
que cuando se encuentre con x objeto que será como un NPC se pare, hasta ahí todo bien, no se reproduce la animación de andar ni nada, pero sigue reproduciendose la animación de mirar arriba,izquierda,abajo,derecha.
¿Alguna idea para dejarlo completamente quieto?
Dejo por aquí el codigo:

CREATE

image_speed = 0;
contador=0;
subim=0;
 if global.ojos = 2 {
    visible = true}

STEP
if keyboard_check(vk_left)//SI PRESIONO IZQUIERDA
{
    if keyboard_check(vk_up) //Y ARRIBA
        {hspeed=-2.5 vspeed=-2.5}
    else if keyboard_check(vk_down)//Y ABAJO
        {hspeed=-2.5 vspeed=2.5}
    else if keyboard_check(vk_right) {hspeed=0} //Y DERECHA
    else {hspeed=-4} //SOLO IZQUIERDA
}
else if keyboard_check(vk_right)//SI PRESIONO DERECHA
{
    if keyboard_check(vk_up) //Y ARRIBA
        {hspeed=2.5 vspeed=-2.5}
    else if keyboard_check(vk_down) //Y ABAJO
        {hspeed=2.5 vspeed=2.5}
    else if keyboard_check(vk_left) {hspeed=0} ////E IZQUIERDA
    else {hspeed=4} //SOLO DERECHA
}

else if keyboard_check(vk_up) and !keyboard_check(vk_right) and !keyboard_check(vk_left) //SI PRESIONO ARRIBA
{
    if keyboard_check(vk_down) vspeed=0//Y ABAJO
    else vspeed=-4//SOLO ARRIBA
}
else if keyboard_check(vk_down) and !keyboard_check(vk_right) and !keyboard_check(vk_left) //SI PRESIONO ABAJO
{
    if keyboard_check(vk_up) vspeed=0//Y ARRIBA
    else vspeed=4//SOLO ABAJO
}

if !keyboard_check(vk_left) and !(keyboard_check(vk_right))//SI NO PRESIONO IZQUIERDA NI DERECHA
hspeed=0
if !keyboard_check(vk_up) and !(keyboard_check(vk_down))//SI NO PRESIONO ARRIBA NI ABAJO
vspeed=0

//Cambiar sprite
if vspeed > 0 and global.objeto = 0
repeat(6)
{
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 0  subim= 0
   if subim > 3 subim = 0
}
else if vspeed < 0  and  global.objeto = 0
repeat(6)
{
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 4  subim= 4
   if subim > 7 subim = 4
}
else if vspeed = 0  and  global.objeto = 0
{
   if hspeed < 0
   repeat(6)
   {
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 8  subim= 8
   if subim > 11 subim= 8
   }
   
   else if hspeed > 0  and  global.objeto = 0
   repeat(6)
   {
   contador+= 1
   if contador > 50 { contador = 0 subim+=1}
   if subim < 12  subim= 12
   if subim > 15 subim= 12
   }
//Colisión muro
}
if keyboard_check_released(vk_down) and vspeed = 0 and hspeed = 0{
subim = 0}
if keyboard_check_released(vk_up) and vspeed = 0 and hspeed = 0{
subim = 4}
if keyboard_check_released(vk_left) and vspeed = 0 and hspeed = 0{
subim = 8}
if keyboard_check_released(vk_right) and vspeed = 0 and hspeed = 0{
subim = 12}

if instance_place(x + hspeed, y,Colision){hspeed = 0;}
if instance_place(x,y + vspeed ,Colision){vspeed = 0;}

//PARARSE AL HABLAR CON UN OBJETO

if instance_place(x + hspeed, y,Colision_2) and keyboard_check(ord("A")) {global.objeto = 1;}
if instance_place(x,y + vspeed ,Colision_2) and keyboard_check(ord("A")) {global.objeto = 1;}

if global.objeto = 1 {
   hspeed = 0 ;
}
if global.objeto = 1 {
   vspeed = 0 ;
}



DRAW

draw_sprite(sprite_index,subim,x,y)


Gracias de antemano por ayudarme, si tenéis algún consejo sobre como podría realizarlo también me sirve ^^


 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Respuesta #1 en: Mayo 28, 2019, 01:04:46 pm
Buenas. Yo tengo poca idea porque soy muy novato y tal pascual,  pero me ha llamado la atención esto:

 if global.ojos = 2 {
    visible = true}

Si lo pones en el Create solo lo comprobará al iniciarse la room, es eso lo que querías? Al igual sí, no se. Un saludo!


 


Desconectado Cher3

Respuesta #2 en: Mayo 29, 2019, 10:26:18 pm
Ah eso es para una selección de sprites, según un objeto que eliges previamente se te pondría ese sprite, sin embargo no me refería a eso.
En el codigo que he mandado incluye el movimiento del pj y demás ademas de que si toca x objetos se pare, sin embargo cuando se para en los objetos tipo un npc no se mueve de lugar pero puede mirar a varios lados lo cual queda muy poco profesional