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

Autor Tema: Error en movimiento por orientación (else if)  (Leído 466 veces)

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

Desconectado Reteke

  • Visitante
  • *
  • Puntos: 4
  • Mensajes: 1
    • Ver Perfil
en: Julio 11, 2019, 07:07:42 am
Estoy intentando que el personaje se mueva (soy principiante) pero estoy teniendo problemas con la función "else if"
Código: [Seleccionar]
///Desplazamiento

//Controles
var keyUp, keyDown, keyLeft, keyRight, keyRun, keySlow;

keyUp = -keyboard_check(ord("W"));
KeyDown = - keyboard_check(ord("A"));
KeyLeft = keyboard_check(ord("S"));
KeyRight = keyboard_check(ord("D"));

keyRun = keyboard_check(vk_lshift);
keySlow = keyboard_check(vk_lcontrol);

//Velocidad y movimiento
if       (keyRun) intSpeed  = intRun;  //Carrera
else if  (keySlow) intSpeed = intSlow; //Sigilo
else     intSpeed           = intWalk; //Caminata

    //Movimiento
intMoveH = (keyLeft + KeyRight) * global.bolPause; //Movimiento Horizontal
intMoveV = (keyUp + KeyDown) * global.bolPause; //Movimiento Vertical

    //Orientación
if (global.bolPause != 0)
{
    if (intMoveH > 0)
    {
        strFacing = "east";
        intFaceX = 1;
        intFaceY = 0;
    }
   
    else if (intMoveH < 0)
    {
        strFacing = "west";
        intFaceX = -1;
        intFaceY = 0;
    }
        if (intMoveV > 0);
    {
        strFacing = "south"
        intFaceX = 0;
        intFaceY = 1;
    }
   
    else if (intMoveV < 0);                     <-------- en esta linea me marca el error :b
    {
        strFacing = "north"
        intFaceX = 0;
        intFaceY = -1;
    }
}

    //Desplazamiento horizontal
    if (intMoveH !=0) intVX = scrApproach(intVX, intSpeed * intMoveH, intAcc);
    else intVX = scrApproach(intVX, intSpeed * intMoveH, intFric);
   
    //Desplazamiento vertical
    if (intMoveV != 0) intVY = scrApproach(intVY, intSpeed * intMove, intAcc);
    else intVY = scrApproach(intVY, intSpeed * intMoveV, intFric);
   
x += intVX;
y += intVY;

Podrian ayudarme porfavor?

Estoy usando este video para guiarme
https://www.youtube.com/watch?v=sHdhOqV2Vko
min 24:50

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Black_Cat

  • Ganador CGM Game Jam #1
  • Adicto
  • *
  • Puntos: 734
  • Mensajes: 345
  • Agradecido: 55 veces
  • 🧡🧡🧡🧡🧡
    • Ver Perfil
Respuesta #1 en: Julio 11, 2019, 05:46:30 pm
Para aclarar "else if" no es una función, es una condición (if/else).

El problema, intuyo, porque no voy a mirar el video, es que tiene el punticoma totalmente seguido osease:
if (cond);
Lo cual haría que no entre en el bloque siguiente.

Para la proxima, sería mejor que colocaras el error que tira el Game Maker.  :-[


Únete al servidor mas chidori de Discord

 


Desconectado 3dgeminis


Desconectado FernandoNavarro

  • Habitual
  • *
  • Puntos: 24
  • Mensajes: 10
  • Sexo: Masculino
    • Ver Perfil
Respuesta #3 en: Julio 14, 2019, 02:33:50 am
Encontré tu error está en que deberías cambiar KeyDown = - keyboard_check(ord("A"));, por KeyDown = keyboard_check(ord("A"));, al igual que con KeyLeft, le falta un menos antes de la función keyboard_check  debería quedar así:
keyUp = -keyboard_check(ord("W"));
KeyDown = keyboard_check(ord("S"));
KeyLeft = -keyboard_check(ord("A"));
KeyRight = keyboard_check(ord("D"));

Un consejo, no sé si se te haga más cómodo bajar con la "S", e ir a la izquierda con "A" así como lo dejé, si quieres cámbialo, ahora prueba tu código
PD: Yo usé el mismo video para tener una idea