Hola de nuevo :)
Quiero que mi personaje baje de una plataforma pulsado dos teclas (cursor abajo y la tecla Z).
El problema es que la tecla Z tambien la uso para el salto y cuando hago la combinacion el personaje salta.
Si uso otras dos teclas (por ejemplo A y S) no tengo ningun problema.
Como puedo hacerlo sin liarme mucho...
La unica solucion que se me ocurre es con una variable que sea 1 si se pulsa abajo y despues un if para comprobar si esa variable es 1 y se esta pulsando la tecla de salto.
Seguramente es algo sencillo y me da verguenza ir preguntando por aqui esas cosillas con el nivel que teneis algunos de por aqui. :-[
nivel???? aquí estamos para preguntar,ya seamos el que está haciendo el juego de las manzanitas(incluido en game maker lite y pro) o el que va a revolucionar la tecnología con :GM8: pro,estamos para preguntar y responder.
respecto a tu pregunta:
1-en el evento create del personaje pon saltaya=0
2- en el evento de la tecla para saltar pon: if saltar=0 saltaya=1 if saltar=0 controler=1 if saltaya=1 && controlador=1 pon el codigo para que salte [0..1]
(ponlo en codigo porque sino parece que la vida es una montaña que hay que escalarla)
3-en la alarma 0 pon controlador=0
4-en el evento de la tecla para saltar pon tambien: if saltar=1 & controlador=0 & keyboard_check_botoon(el otro boton para bajar) pon el codigo para bajar [1.1](escribí mal butoon)
5-en la alarma uno pon saltar=0
6-listo!!!! ;)
Más facil aun, aunque Creador de juegos GM te lo ha explicado más explícito:
En el evento en el que activas el salto (supongo que en pulsar Z):
if (keyboard_check(vk_down)){
//bajar plataforma
}
else
{
//saltar
}
Si has implementado el salto supongo que no tendrás problemas con la implementación de bajar de la plataforma.
Mucha suerte con tu proyecto y espero verlo algún día en Juegos en Desarrollo :D .
¡Un saludo!
Lo primero, gracias por vuestras respuestas.
He probado la idea de Gutic pero el personaje me sigue saltando en vez de bajar de la plataforma.
La de Creador de Juegos GM no acabo de entenderla y me cuesta trasladarla a mi codigo asi que he optado por colgarlo aqui a ver si me podeis hechar un cable de manera mas clara... :)
// Variables
mov=0
cau=0
//Movimiento lateral
if keyboard_check(vk_right) {repeat(3) {if place_free(x+1,y) {x+=1 mov=1 image_xscale=1}}}
if keyboard_check(vk_left) {repeat(3) {if place_free(x-1,y) {x-=1 mov=1 image_xscale=-1}}}
//Salto
if keyboard_check_pressed(ord("Z")) and !place_free(x,y+1) {salto=1 vspeed=-7}
if keyboard_check_released(ord("Z")) then vspeed+=(abs(vspeed/1))
//Abajo plataformas traspasables
if keyboard_check(vk_down) and place_meeting(x,y+1,obj_bloc_tras) and !place_meeting(x,y+1,object1) then {salto=1 y+=1}
//Gravedad
if place_free(x,y+1+vspeed) {cau=1 vspeed+=.3 if vspeed>8 {vspeed=8}}
else {if vspeed>0 {move_contact_all(270,vspeed+1)} if vspeed<0 {move_contact_all(90,vspeed-1)} vspeed=0 {if !place_free(x,y+1+vspeed) salto=0}}
//Sprite
if mov=1 {image_speed=.5} else {image_speed=0 sprite_index=player}
if (salto=1 or cau=1) then sprite_index=jump else sprite_index=player
Como veis, lo tengo que el personaje baje de la plataforma taspasable solo pulsando la tecla "cursor abajo" y funciona sin problemas. Lo que quiero, como ya explique, es que aparte de la tecla abajo, se deba pulsar tambien la tecla "Z" (la del salto) para asi evitar que por error del jugador el personaje salte de la plataforma.
Y si utilizas un trigger? Son bastantes fáciles de usar, solo tienes que poner la palabra return en algún lado de la función 8)
Cita de: Marron121 en Febrero 11, 2013, 09:44:16 PM
Y si utilizas un trigger? Son bastantes fáciles de usar, solo tienes que poner la palabra return en algún lado de la función 8)
tigger? Buscare a ver que encuentro...
Mientras, en un momento de lucidez, creo que he dado con algo que me funciona...
//Salto
if baja=0 and keyboard_check_pressed(ord("Z")) and !place_free(x,y+1) {salto=1 vspeed=-7}
if keyboard_check_released(ord("Z")) then vspeed+=(abs(vspeed/1))
//Abajo plataformas traspasables
if keyboard_check(vk_down) and place_meeting(x,y+1,obj_bloc_tras) then baja=1 else baja=0
if baja=1 and keyboard_check_pressed(ord("Z")) and place_meeting(x,y+1,obj_bloc_tras) and !place_meeting(x,y+1,object1) then {salto=1 y+=2}
// if keyboard_check(vk_down)=false then baja=0
Cita de: Domenec en Febrero 11, 2013, 09:52:30 PM
Cita de: Marron121 en Febrero 11, 2013, 09:44:16 PM
Y si utilizas un trigger? Son bastantes fáciles de usar, solo tienes que poner la palabra return en algún lado de la función 8)
tigger? Buscare a ver que encuentro...
Mientras, en un momento de lucidez, creo que he dado con algo que me funciona...
//Salto
if baja=0 and keyboard_check_pressed(ord("Z")) and !place_free(x,y+1) {salto=1 vspeed=-7}
if keyboard_check_released(ord("Z")) then vspeed+=(abs(vspeed/1))
//Abajo plataformas traspasables
if keyboard_check(vk_down) and place_meeting(x,y+1,obj_bloc_tras) then baja=1 else baja=0
if baja=1 and keyboard_check_pressed(ord("Z")) and place_meeting(x,y+1,obj_bloc_tras) and !place_meeting(x,y+1,object1) then {salto=1 y+=2}
// if keyboard_check(vk_down)=false then baja=0
al final te sirvieron las cosas que te dí!!!! :D felicitaciones!!!! si quieres te puedo dar un background (si lo encuentro)
Si fue buena vuestra ayuda... Y más que necesitaré en el futuro. :D
La verdad es que ya he resuelto varios problemas leyendo o preguntando por aquí en el foro. :)