Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

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: plataforma  (Leído 1025 veces)

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

Desconectado Kirlian

  • Habitual
  • *
  • Puntos: 21
  • Mensajes: 57
    • Ver Perfil
en: Julio 28, 2012, 12:14:41 pm
 ??? hola maquero comense un proyecto de plataforma pero algo me falto me dicenm que fue aqui esta el codigo y mas adelante explico el problema

Step
if place_free(x,y+1)
{gravity=1}
else
{gravity=0}

con este codigo mantengo al jugador sin gravedadsi se encuentra chocando con un piso y si no hay le doy gravedad esto si me funciona perfecto

los movimientos tambien me gusta no uso codigo sino las flechas rojas pongo derecha e izquierda con las flechas a una vel de 5 pero el problema es en el salto cuando salto salta muchas veces

tengo este codigo en el salto

Tecla espacio: codigo vspeed =-10 y salta bien pero al presionar antes de que caiga salta otravez y asi infinitas veces si le pongo keyboard lo ase muchisimo con solo dejar presionado ya que esta no se desactiva asta soltar la tecla lo que quiero es que solo salte 1 vez.

el otro problema es que cuando esta en el aire y lo muevo a la izquierda o derecha la caida disminulle y no es la misma que cuando saltas nadamas disminulle la gravedad y la velocidad seva como inclinada y un poco lento no parese nada que ver con lo que es la gravedad pero si dejo de presionar estas teclas para caminar pues tiene reacciona normal gracias



 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Gunslito

  • Asiduo
  • *
  • Puntos: 0
  • Mensajes: 105
  • Sexo: Masculino
  • Lopsi
    • Ver Perfil
    • Gunslito
Respuesta #1 en: Julio 28, 2012, 07:04:30 pm
Tenes que hacer que GM chequee si el jugador esta en el aire con una variable para que no pueda saltar de nuevo,
No recuerdo bien los códigos
Pero podrias hacer que chequee el eje Y si tiene 0 puede hacer el salto de lo contrario que se active una variable (Por ejemplo si el objeto esta en el piso saltando = 0 de lo contrario saltando = 1 y en el código del salto si saltando = 1 exit else -- y tu código entonces solo podrías saltar si estas en el piso y no en el aire)
Fijate si este código te funciona, creo que era así.

Código: [Seleccionar]
if (place_free(x+0,y+1))// --> si no hay colision en el eje y
gravity=1
else
gravity=0
« Última modificación: Julio 28, 2012, 07:07:55 pm por Gunslito »

 


Desconectado Kirlian

  • Habitual
  • *
  • Puntos: 21
  • Mensajes: 57
    • Ver Perfil
Respuesta #2 en: Julio 28, 2012, 09:17:52 pm
Gunslito gracias a lo que digiste de la variable me sirvio se arreglo los dos errores al mismo tiempo pero fue de chiripa jajaja no entiendo el codigo que puse

es

if !place_free(x,y+1) and salto = 0
{vspeed=-10}

else
{salto=0}

con este codigo me funciono me podrian porfavor explicar
« Última modificación: Julio 28, 2012, 09:20:13 pm por Kirlian »

 


Desconectado Karasuman

Respuesta #3 en: Julio 28, 2012, 09:41:02 pm
Yo esto lo hago de otra forma.

Código: [Seleccionar]
//Create event
en_aire=0
//si en_aire=0, significa que el personaje esta en el suelo.
//si en_aire=1, significa que el personaje esta en el aire.
//------------

//Step
if place_free(x,y+1)
{
    gravity=1
    en_aire=1
}else{
    gravity=0
    en_aire=0
}
//------------------------------

//Boton de salto

if !place_free(x,y+1) and en_aire= 0 //Si el personaje esta en el piso y la variable en_aire=0 entoces puedes saltar
{
vspeed=-10
}

//-----------

 


elviskelley

  • Visitante
Respuesta #4 en: Julio 28, 2012, 11:56:53 pm
event step.
if place_free(x,y+1) then {gravity=0.8;}else{gravity=0;} //establece la gravedad solo si esta en el aire
if keyboard_check(ord("Z")) and !place_free(x,y+1) {vspeed=-12} //con Z salta solo si esta sobre el suelo
if vspeed >12 then {vspeed=12;} //evita caiga a velocidad luz, ose alimita el maximo de velocidad de caida.
//lo coloque que salte con la Z pero cambiala por la de tu gusto.

Event de collision contra el objPiso.
move_contac_solid(direction,vspeed) vspeed=0; //indica que ya no debe seguir cayendo, y que se mueva en la direccion que tu indiques.





 


Desconectado loro2000

Respuesta #5 en: Agosto 01, 2012, 11:44:28 am
Event step :

if place_free(x,y+1) then {gravity=0.5} else {gravity=0;}
if vspeed > 16 then {vspeed=16}

Event keyboard left :

if place_free(x-6,y) then {x-=6;}

Event keyboard right :

if place_free(x+6,y) then {x+=6;}

Event keyboard up :

if not place_free(x,y+1) then {vspeed-=10}


Collition con el obj_bloque o obj_Piso o como lo llames :

move_contact_solid(direction,speed) speed=0;


PD : Por si a caso no te acordaste pon el obj_Piso en solid.
« Última modificación: Agosto 01, 2012, 11:47:10 am por loro2000 »

_______________________________________
-->      http://juegosalmando.artisteer.net/      <--
_______________________________________