Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Domenec en Febrero 01, 2013, 11:55:40 PM

Título: ¿Porque se unde mi personaje en la escalera?
Publicado por: Domenec en Febrero 01, 2013, 11:55:40 PM
Ya he posteado alguna otra vez mis dudas.
Ahora me encuentro con un problema al que no se hacer frente. Hay algo que se me escapa. :'(

Estoy haciendo un plataformas y me encuentro liado con el tema de escaleras. Mi personaje ya sube y baja por ellas pero hoy me he dado cuenta que si desde una platarfoma superior salto justo encima de una escalera, se unde un poco dentro de ella en vez de quedarse en la parte totalmente superior de ella (como si fuera el suelo).

Espero haberme explicado bien...
Agradezco toda la ayuda que me podais dar....
He mirado tutoriales en internet y juraria que lo tengo todo bien.  :-[
Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: Silver_light en Febrero 02, 2013, 12:03:55 AM
Estaría bueno si pudieras colocar el código de colision de las escaleras, porque así como así podrían ser varias cosas lo que provoquen el problema. Podría ser que no sean solidas, o que tenga un parent incorrecto, por ejemplo.
Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: Domenec en Febrero 02, 2013, 12:51:12 AM
Cita de: Silver_light en Febrero 02, 2013, 12:03:55 AM
Estaría bueno si pudieras colocar el código de colision de las escaleras, porque así como así podrían ser varias cosas lo que provoquen el problema. Podría ser que no sean solidas, o que tenga un parent incorrecto, por ejemplo.

Esto es lo que me muestra en "Show information". Lo estoy haciendo usando el D&D.

Information about object: obj_character
Sprite: spr_right
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Mask:

Create Event:

set variable dir to 1
set variable jmp to 0
set variable ladder to 0

Step Event:

COMMENT: Check whether in the air
if relative position (0,1) is collision free for Only solid objects
      set the gravity to 0.5 in direction 270
else
      set the gravity to 0 in direction 270
COMMENT: Limit the vertical speed
if vspeed is larger than 12
      set variable vspeed to 12
COMMENT: ladder
if at relative position (0,1) there is object obj_ladder
      set the gravity to 0 in direction 270
      set the vertical speed to 0

Collision Event with object obj_block:

move in direction direction at most 12 till a contact with solid objects
set the vertical speed to 0
      for all obj_character: if relative position (0,1) is not collision free for Only solid objects
            set variable jmp to 0
      if dir is equal to 1
            set the sprite to spr_right with subimage 0 and speed 0
      if dir is equal to 2
            set the sprite to spr_left with subimage -1 and speed 0
Keyboard Event for Key:

set variable dir to 2
      if jmp is equal to 1
            set the sprite to spr_jmp_left with subimage 0 and speed 0
      else
            set the sprite to spr_left with subimage -1 and speed 0.3
if relative position (-4,0) is collision free for Only solid objects
      jump relative to position (-4,0)

Keyboard Event for Key:

if at relative position (0,-1) there is object obj_ladder
      if relative position (0,-1) is collision free for Only solid objects
            jump relative to position (0,-4)

Keyboard Event for Key:

set variable dir to 1
      if jmp is equal to 1
            set the sprite to spr_jmp_right with subimage 0 and speed 0
      else
            set the sprite to spr_right with subimage -1 and speed 0.3
if relative position (4,0) is collision free for Only solid objects
      jump relative to position (4,0)

Keyboard Event for Key:

if at relative position (0,1) there is object obj_ladder
      if relative position (0,1) is collision free for Only solid objects
            jump relative to position (0,4)

Key Press Event for Z-key Key:

set variable jmp to 1
if relative position (0,1) is not collision free for Only solid objects
      set the vertical speed to -8
if dir is equal to 1
      set the sprite to spr_jmp_right with subimage 0 and speed 0
else
      set the sprite to spr_jmp_left with subimage 0 and speed 0

Key Release Event for Key:

if jmp is equal to 0
      set the sprite to spr_left with subimage 0 and speed 0
else
      set the sprite to spr_jmp_left with subimage 0 and speed 0
Key Release Event for Key:

if jmp is equal to 0
      set the sprite to spr_right with subimage 0 and speed 0
else
      set the sprite to spr_jmp_right with subimage 0 and speed 0

Key Release Event for Z-key Key:

execute code:

if keyboard_check_released(ord("Z")) then vspeed+=(abs(vspeed/2))

Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: elviskelley en Febrero 02, 2013, 02:20:29 AM
Cambia el Solid=false; por solid=true;
Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: Domenec en Febrero 02, 2013, 11:26:16 AM
Cita de: elviskelley en Febrero 02, 2013, 02:20:29 AM
Cambia el Solid=false; por solid=true;

Me sigue haciendo lo mismo  :'(
La verdad es que debo tener un lio por aqui que se me escapa... :(
Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: Domenec en Febrero 02, 2013, 01:46:50 PM
Cita de: Domenec en Febrero 02, 2013, 11:26:16 AM
Cita de: elviskelley en Febrero 02, 2013, 02:20:29 AM
Cambia el Solid=false; por solid=true;

Me sigue haciendo lo mismo  :'(
La verdad es que debo tener un lio por aqui que se me escapa... :(

Tal vez tenga que crear un sprite especifico para la parte superior de la escalera de manera que sea solido siempre menos cuando estas subiendo o bajando por ella o cuando no estas saltando o en caida.
Es lo unico que se me ocurre por ahora.
Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: Domenec en Febrero 02, 2013, 09:51:33 PM
Cita de: Domenec en Febrero 02, 2013, 01:46:50 PM
Cita de: Domenec en Febrero 02, 2013, 11:26:16 AM
Cita de: elviskelley en Febrero 02, 2013, 02:20:29 AM
Cambia el Solid=false; por solid=true;

Me sigue haciendo lo mismo  :'(
La verdad es que debo tener un lio por aqui que se me escapa... :(

Tal vez tenga que crear un sprite especifico para la parte superior de la escalera de manera que sea solido siempre menos cuando estas subiendo o bajando por ella o cuando no estas saltando o en caida.
Es lo unico que se me ocurre por ahora.

Edito
¿Se puede cambiar el atributo solid de un objeto usando el D&D?
He pensado en crear una plataforma solida en la parte superior de la escalera que se vuelva solida o no en funcion de si estas subiendo o bajando la escalera.
Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: Silver_light en Febrero 02, 2013, 11:15:43 PM
Hmm, entonces seguramente hay un código por ahí que causa algún conflicto. Personalmente necesitaría ver el editable para checkarlo mejor.

-Si, si puede cambiar el estado solido. Solo debes ir a la pestaña "Control" y colocar el primer cubo que dice VAR, que es completamente gris.
Colocas en Variable: solid
y en Value: true

Eso haría que cambie.
Título: Re:¿Porque se unde mi personaje en la escalera?
Publicado por: Domenec en Febrero 03, 2013, 12:30:38 AM
Cita de: Silver_light en Febrero 02, 2013, 11:15:43 PM
Hmm, entonces seguramente hay un código por ahí que causa algún conflicto. Personalmente necesitaría ver el editable para checkarlo mejor.

-Si, si puede cambiar el estado solido. Solo debes ir a la pestaña "Control" y colocar el primer cubo que dice VAR, que es completamente gris.
Colocas en Variable: solid
y en Value: true

Eso haría que cambie.

Gracias por tu ayuda...
De momento lo he medio solucionado creando una base para la parte superior de la escalera que es visible pero no solida y que llamo cuando estoy en una escalera de manera que la puedo atravesar. De todas maneras tendre en cuenta lo que me has comentado a ver si asi me ahorro ese objeto extra.
Por cierto, si tengo algun problemilla mas...te paso el editable sin problema... :)