Buenas, gente. Estoy renegando con hacer escaleras.
Estuve navegando en la comunidad en busca de información, descargué unos ejemplos pero la verdad es que las anotaciones que tienen me resultan carentes de ayuda. No son detalladas para ser consideradas un ejemplo. Incluso algunos ejemplos son buenos pero no son precisamente lo que estoy buscando.
Voy a detallar completamente todo, desde el inicio hasta el final, por más sencillo que parezca, dividiendo cada situación en items, y debajo de los cuales planteo mi hipótesis para resolverlo.
1) La escalera va a comenzar desde la altura del piso, pero quiero que el jugador pueda pasarla por delante de ella cuando simplemente esté caminando por alli.
Mi posible solución: Para que el personaje pase por delante de ella, la escalera tendrá que tener mayor profundidad, o sea, la depth. Y no debe estar mercada la casilla "SOLID" por ningún motivo.
----------------------------------------------------------------------------------------------------------------------------------------------
2) Me gustaría lograr es que la condición para treparse a la misma sea que la coordenada X del jugador esté dentro de los límites de la escalera (es decir, entre la X1 (el lateral izquierdo) y X2 (el lateral derecho) de la misma) y que, además, pulse la tecla "arriba" (con pulsarla sólo un instante alcance para que quede trepado y quieto).
Mi posible solución: En el evento CREATE del jugador, creé una variable booleana establecida en false.
Luego, en el evento COLISIÓN CON ESCALERA del jugador, puse un bloque de código con lo siguiente:
---------------------------------------------------------------------------------------------------------------------------------
3) Ahora lo que falta aclarar es qué sucede cuando la variable ESCALERA está en FALSE. La gravedad entrará en vigencia si el jugador no está en contacto con el piso, activando su respectivo sprite de caída y su velocidad de animación. Si está en contacto con el piso, la gravedad valdrá cero.
Pero todo este código me anda mal, cuando subo a una escalera, se teletransporta a otra (supongo que por eso de las prioridades de las instancias, de cuál ubiqué primero en la room). Y la animación de trepado no se reproduce y no sé cuántos más errores tiene.
Espero puedan ayudame. Desde ya, muchas gracias. :)
Estuve navegando en la comunidad en busca de información, descargué unos ejemplos pero la verdad es que las anotaciones que tienen me resultan carentes de ayuda. No son detalladas para ser consideradas un ejemplo. Incluso algunos ejemplos son buenos pero no son precisamente lo que estoy buscando.
Voy a detallar completamente todo, desde el inicio hasta el final, por más sencillo que parezca, dividiendo cada situación en items, y debajo de los cuales planteo mi hipótesis para resolverlo.
1) La escalera va a comenzar desde la altura del piso, pero quiero que el jugador pueda pasarla por delante de ella cuando simplemente esté caminando por alli.
Mi posible solución: Para que el personaje pase por delante de ella, la escalera tendrá que tener mayor profundidad, o sea, la depth. Y no debe estar mercada la casilla "SOLID" por ningún motivo.
----------------------------------------------------------------------------------------------------------------------------------------------
2) Me gustaría lograr es que la condición para treparse a la misma sea que la coordenada X del jugador esté dentro de los límites de la escalera (es decir, entre la X1 (el lateral izquierdo) y X2 (el lateral derecho) de la misma) y que, además, pulse la tecla "arriba" (con pulsarla sólo un instante alcance para que quede trepado y quieto).
Mi posible solución: En el evento CREATE del jugador, creé una variable booleana establecida en false.
Código [Seleccionar]
escalera = false
Luego, en el evento COLISIÓN CON ESCALERA del jugador, puse un bloque de código con lo siguiente:
Código [Seleccionar]
///////Hay que aclarar que el sprite de la escalera tiene 15 pixeles de ancho, siendo el nº 8 el centro, por eso lo de sumar y restar 7 a X,
para determinar los laterales izquierdo y derecho de la misma.
if ((obj_escalera.x) - 7) < x < ((obj_escalera.x) + 7) and keyboard_check(vk_up)
{
escalera = true
}
if escalera = true
{
x = obj_escalera.x
sprite_index = spr_prota_escalera //Sprite del jugador trepado
image_index = 0
gravity = 0
}
if escalera = true and keyboard_check(vk_up)
{
y = y-4
image_speed = 0.1 //Para que comience la animación de trepar (debería detenerse al dejar de pulsar la tecla)
}
if escalera = true and keyboard_check (vk_down)
{
y = y+4
image_speed = 0.1
}
/////////También, para que el jugador se suelte de la escalera, puse:
if keyboard_check (vk_space)
{
escalera = false
}
---------------------------------------------------------------------------------------------------------------------------------
3) Ahora lo que falta aclarar es qué sucede cuando la variable ESCALERA está en FALSE. La gravedad entrará en vigencia si el jugador no está en contacto con el piso, activando su respectivo sprite de caída y su velocidad de animación. Si está en contacto con el piso, la gravedad valdrá cero.
Código [Seleccionar]
if escalera = false
{
if place_free(x,y+1)
{
gravity = 0.7
sprite_index = spr_prota_cayendo
image_speed = 0.3
}
else
{
gravity = 0
}
}
Pero todo este código me anda mal, cuando subo a una escalera, se teletransporta a otra (supongo que por eso de las prioridades de las instancias, de cuál ubiqué primero en la room). Y la animación de trepado no se reproduce y no sé cuántos más errores tiene.
Espero puedan ayudame. Desde ya, muchas gracias. :)