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



#1 Julio 28, 2012, 07:04:30 PM Ultima modificación: Julio 28, 2012, 07:07:55 PM por Gunslito
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í.

if (place_free(x+0,y+1))// --> si no hay colision en el eje y
gravity=1
else
gravity=0


#2 Julio 28, 2012, 09:17:52 PM Ultima modificación: Julio 28, 2012, 09:20:13 PM por Kirlian
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

Yo esto lo hago de otra forma.


//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
}

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

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.





#5 Agosto 01, 2012, 11:44:28 AM Ultima modificación: Agosto 01, 2012, 11:47:10 AM por loro2000
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.
_______________________________________
-->      http://juegosalmando.artisteer.net/      <--
_______________________________________