perfecto lordgeorge esto me vale...cambiare el shift a mi gusto pero es exactamente lo que buscaba mil gracias a todos  ;D

De nada, al menos aprendi otro uso del "End Step" xD

por cierto y para no tener que usar el shit+right o left y usar una tecla para rigth y otra para left....sin aux....pero bueno si es mucho lio se puede quedar asi.Saludos y gracias

entonces ya esta listo??
porque yo lo hice solo que puse que left y right dieran +15 y -15
asi son menos codigos xD
pero lo quieres de todas formas con +2 y -2
o ya no ya?


Cita de: unbleached en Diciembre 12, 2010, 08:17:38 PM
por cierto y para no tener que usar el shit+right o left y usar una tecla para rigth y otra para left....sin aux....pero bueno si es mucho lio se puede quedar asi.Saludos y gracias
Todo eso se puede y no es dificil de modificar, pero se hace un poco mas largo el codigo. Eso s? lo ideal es que lo modifiques tu mismo, o por lo menos entiendas como solucion? el problema y puedes llegar a otra soluci?n a?n mas simple/entendible (as? se aprende :D)

Cualquier duda del ejemplo pregunta no mas.

tienes toda la razon Lordgeorge....no sabria por donde empezar osea que expondre aqui las conclusiones que saco mirando el codigo que me pasaste.

codigo en el step:

//Una forma mejor de codear los controles, asi se ve mejor visualmente an programar.
keyUp=keyboard_check(vk_up)
keyDown=keyboard_check(vk_down)
keyLeft=keyboard_check(vk_left)
keyRight=keyboard_check(vk_right)
keyShift=keyboard_check(vk_shift) //Para mantener la posicion del sprite.
keySpace=keyboard_check(vk_space) //Para disparar.

if(keyUp){
    speed=1
}
else{
    if(keyDown){
        speed=-1
    }
    else{
        speed=0
    }
}
if(keySpace){
    bala=instance_create(x,y,Bala)
    bala.direction=direction
    bala.image_angle=direction
}
aux=keyLeft-keyRight //Es para hacer el movimiento a la izquierda y derecha con el mismo codigo.
if(aux!=0){
    if(keyShift){
        motion_set(direction+90*aux,1)
    }
    else{
        direction+=aux*2
        image_angle=direction
    }
}



codigo en el End step:

if(keyShift){
    direction=direction-90*aux
}


La verdad es que nunca he asignado teclas para mover o disparar usando codigo y lo que deduzco es:

1. que si no aparece la tecla que quiero asignar a un movimiento en el listado de arriba

keyUp=keyboard_check(vk_up)
keyDown=keyboard_check(vk_down)
keyLeft=keyboard_check(vk_left)
keyRight=keyboard_check(vk_right)
keyShift=keyboard_check(vk_shift) //Para mantener la posicion del sprite.
keySpace=keyboard_check(vk_space) //Para disparar.


esa tecla no tendr? ninguna funcion.
con lo cual,lo primero que deberia hacer es quitar el keyShift=keyboard_check(vk_shift)
y a?adir las dos teclas que quiero para el movimiento lateral,una para izquierda y otra para derecha.
Con lo cual, y dando por hecho que yo no se como "se llaman" las teclas, quedaria algo parecido a esto no?:

keyUp=keyboard_check(vk_up)
keyDown=keyboard_check(vk_down)
keyLeft=keyboard_check(vk_left)
keyRight=keyboard_check(vk_right)
key1=keyboard_check(vk_1)
key2=keyboard_check(vk_2)

keySpace=keyboard_check(vk_space)




P.d: existe una lista del nombre de las teclas en algun sitio?Saludos y gracias

solo la de funciones estan como vk_
las letras y simbolos se ponen con (ord(letra)
ej[gml]keyboard_check(ord(w)[/gml]
Hola de nuevo

Esta en el manual, pero ver ac? es mas r?pido: http://wiki.yoyogames.com/index.php/Keycode_constants
Algunas observaciones:
[gml]//Para los n?meros del teclado num?rico:
key1=keyboard_check(vk_numpad1)
key2=keyboard_check(vk_numpad2)
//Para los n?meros sobre las letras QWERT...:
key1=keyboard_check(ord("1"))//ord('1') --> tambien funcionan esas comillas
key2=keyboard_check(ord("2"))
//Y para las letras:
key1=keyboard_check(ord("Z"))//siempre poner la letra en may?scula --> ord("z") no funciona
key2=keyboard_check(ord("X"))[/gml]
???Por qu? usar esto en ves de lo eventos???
Porque queda mas "ordenado" (depende de cada persona eso s?), y lo mas importante, permite que cada jugador pueda cambiar los controles a su gusto (no te preocupes de eso por ahora xD)


bueno aqui siguen mis avances

he cambiado las teclas de movimento por W-A-S-D y mi intencion es hacer que se desplacen lateralmente con left y rigth


keyW=keyboard_check(ord("W"))
keyS=keyboard_check(ord("S"))
keyA=keyboard_check(ord("A"))
keyD=keyboard_check(ord("D"))
keyLeft=keyboard_check(vk_left)
keyRight=keyboard_check(vk_right) 
keySpace=keyboard_check(vk_space)

if(keyW){
    speed=1
}
else{
    if(keyS){
        speed=-1
    }
    else{
        speed=0
    }
}
if(keySpace){
    bala=instance_create(x,y,Bala)
    bala.direction=direction
    bala.image_angle=direction
}



bueno dando por hecho que no voy a usar aux (supongo) la conclusion que saco es poner esto intentando variarar el original:

if(keyLeft){   
motion_set(direction+90,1)
}


queria ver si con left pasaba algo parecido y quitando el aux....y el resultado es qe cuando apreto left mi soldado no se mueve del sitio pero tiembla jejeje con lo cual no sabria que hacer:Pero sigo intentandolo ;)




P:D: aahhh una cosa....que tendria que poner para que solo saliera una bala cada vez que pulso space y no como ahora que salen todas seguidas? saludos y mil gracias.Espero que este post le sirva de ayuda a mas de uno (ademas de a mi)  :P

#26 Diciembre 14, 2010, 12:03:39 AM Ultima modificación: Diciembre 14, 2010, 12:35:28 AM por lordgeorge
Deja aclarar algo:[gml]//Escribir lo siguiente
motion_set(direction+90,1)
//Es lo mismo que escribir esto, pero ahorrando 1 linea xD
direction=direction+90
speed=1[/gml]
Y como est? en el evento "Step", mientras apretes la tecla el soldado girar? en 90 grados y avanzar? 1 pixel (lo har? 30 veces por segundo si usas room_speed de 30), y eso es lo que ves, el soldado gira sin parar y tiembla. (trata de imaginarte/explicar el c?digo y podr?s resolver los problemas mas f?cilmente xD)
Para solucionarlo, guarda la direccion inicial del soldado, para que despues la retome:[gml]//agregas esto en el inicio del "Step" (debe estar antes de cualquier cambio de direcci?n)
lastDirection=direction
//y pones esto en el "End Step"
if(keyLeft){
   direction=lastDirection
}[/gml]
Con eso funciona sin problemas. Pero debes agregar los otros movimientos ahora.

* Pista: El aux en mi ejemplo lo ?nico que hac?a era cambiarle el signo al valor que multiplicaba (direction+90/direction-90 y +2/-2)
** Adjunto mi ?ltima gran ayuda, agregu? algunas cosas ?tiles incluyendo el disparo limitado, no incluye el movimiento completo como lo quieres... digamos intent? hacer un shooter hace mucho cuando aprend?a GM xD

jejejej esto mola

como podras ver he vuelto a cambiar las teclas
8)


lastDirection=direction


keyW=keyboard_check(ord("W"))
keyS=keyboard_check(ord("S"))
keyA=keyboard_check(ord("A"))
keyD=keyboard_check(ord("D"))
keyQ=keyboard_check(ord("Q"))
keyE=keyboard_check(ord("E"))
keyShift=keyboard_check(vk_shift)
keySpace=keyboard_check(vk_space)

if(keyW){
    speed=1
}
else{
    if(keyS){
        speed=-1
    }
    else{
        speed=0
    }
}
if(keySpace){
    bala=instance_create(x,y,Bala)
    bala.direction=direction
    bala.image_angle=direction
}
if(keyQ){   
motion_set(direction+90,1)
}
if(keyE){   
motion_set(direction-90,1)
}
if(keyA){   
direction += 1
speed = 1
}


y esto en el end

if(keyQ){
    direction=lastDirection
}
if(keyE){
    direction=lastDirection
}




he a?adido el

if(keyA){   
direction += 1
speed = 1
}


pero no hace lo que quiero y he probado con image_angle y tampoco.

Despues contesto, ocupado xD
Adjunt? algo que puede ayudar en el post anterior...

@unbleached, te recomiendo que uses el tag de GML.


... ? ...
[gml][/gml]

Es infinitamente m?s legible que resaltar el GML con rojo... Es s?lo una sugerencia.