Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Domenec

136
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
137
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.
138
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.  :-[
139
Bueno, al final gracias a vuestras ideas lo he solucionado... :)
he puesto este codigo:
Citarif (obj_player.y>y+1) {solid=0} else {solid=1}
dentro del objeto bloque solido traspasable y solucionado..  :D
Ademas he dejado como mascara una fina linea de 1 pixel horizontal para que no se me quede atrapado el personaje. De momento en las pruebas todo ok...
140
Ok, ya veo que tendre que jugar con el tema de hacer el objeto solido o no, pero realmente si veo un problema con el tema de que a mitad de salto el jugador deje de presionar la tecla salto y se quede atorado en el bloque porque aun no lo habria cruzado del todo.

Cita de: Iros en Febrero 09, 2013, 04:50:41 AM
Lo único que se me ocurre ahora bien rápido es que comprobés la distancia desde abajo del objeto, si está por debajo usas este código:

obj_bloque.solid = false;

Cuando la distancia sea menor:

obj_bloque.solid = true;

Es lo único que se me ocurre que se puede hacer, donde obj_bloque es el bloque que tenes.

¿Que instruccion se usa en gml para chekear eso?
141
Nueva duda  :)

Quiero cambiar durante el salto uno bloque para que este se vuelva traspasable pero visible. Para ello si uso el instance_change, me cambia el personaje principal por dicho bloque. Supongo que el problema esta en que la instruccion la hago desde dentro del evento del personaje.
Yo solo quiero que me cambien un bloque solido por otro que no lo sea.
¿Donde debo poner la orden para que cambie dicha instancia?

edito:
¿Dicho de otra manera, como puedo atravesar una plataforma desde abajo y que me aguante por arriba?

Gracias
142
Cita de: elviskelley en Febrero 06, 2013, 01:41:00 AM
Qué game maker uso?  8.1 o studio?
El  :GM8: Es por ahora el mejor y mas estable, como dijo el colega Texic.

Uso el sistema D&D o el GML?
Aprende de una vez el GML pues asi te evitas dolores de cabeza.

És mejor trabajar dentro de cada objeto o es mejor usar scripts?
Una mezcla de ambos, aunque si va a usar un codigo que se repite en varios objects con ligeras modificaciones es mejor que uses script para esos codigos, a ver un ejemplo con la gravedad para juegos de plataformas.
if vspeed < 12 and place_free(x,y+1) then
{gravity=.5;}else{gravity=0;}
aca coloque que el maximo de velocidad de caida es de 12, y la gravedad de .5 pero digamos usare gravedad en varios enemigos, con ligeras modificaciones en el codigo, para eso creo un script, algo asi:
scrGravedad //nombre del script
if vspeed < argument0 and place_free(x,y+1) then
{gravity=.argument1;}else{gravity=0;}
//asi los argument me permitiria cambiar el valor al llamar el script, de esta manera.

scrGravedad(12,5); //el resultado es el mismo de arriba ya que al llamar el script use 12 para el argument0 y use 5 para el argument1. Ahora lo llamo en otro object.
scrGravedad(8,2) aca he dicho que el argument0 sea 8 que es la velocidad maxima de caida, y el argument1 sea 2 que es la gravedad, como ves ahorra codigo, y queda mejor organizado.

Existe algún libro físico sobre el GM8.1?
Yo he creado alguno que podes usar, lo podes descargar gratis o pedirlo en fisico: Click Aqui

Tu libro fue de las primeras cosas que me descargue cuando me registre en el foro.  :)
Gracias por tus consejos.
143
Otra vez gracias por el ejemplo. Lo acabo de probar. Me ira bien para tener un buen punto de partida.
De paso, adjunto lo que llevaba hecho hasta el momento.
Todo usando el DyD menos el salto de potencia que consulte aqui mismo en el foro.
Si puedes hechale un vistazo.
Mi principal problema estaba en atravesar la escalera cuando saltas sin que se quede agarrado el personaje y en agarrar la escalera si saltas cuando pulsas arriba con el cursor. Mas o menos eso lo solucione pero tenia problemas con las variables a la hora de detectar si el personaje caia por la gravedad y detectar si estaba en la escalera o no.
Tambien tenia problemas con la deteccion del piso y con los movimientos laterales en la escalera y muchas pijadillas mas por pulir.
En fin, si puedes hechale un ojo y me dices que tal...  :)

Un saludo.
144
Mil gracias Texic.
Estoy en el curro pero en cuanto llegue a casa le hecho un ojo.  :)

Por cierto,  puedes pasarme el link de ese artículo. He mirado un poco pero entre que estoy con el móvil y en la faena pues me será más fácil.

Una vez más,  gracias.
145
Muy buenas
Como muchos de aqui,  tengo intención de crear un juego. En mi caso se trata de un plataformas. Tengo muchas ideas en la cabeza pero poco tiempo para llevar las a cabo.  :-[
Me lie a saco y empezar a crear el juego a base de mirar tutorials,  leer aquí y allí y preguntar en este mismo foro algunas de las dudas que me iban surgiendo.
El tema está en que me está costando avanzar en cosas que considero básicas como subir o bajar escaleras,  saltar,  etc.  Creo que no acabo de entender la manera de funcionar de algunas estructuras.  Total,  que he decidido ir más paso a paso y empezar de cero y ahí vienen mis dudas:

Qué game maker uso?  8.1 o studio?
Uso el sistema D&D o el GML?
És mejor trabajar dentro de cada objeto o es mejor usar scripts?
Existe algún libro físico sobre el GM8.1?

Gracias de antemano.
Un saludo
146
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... :)
147
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.
148
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.
149
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... :(
150
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))