Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Como hacer que un objeto cambie de un sprite a otro y luego vuelva  (Leído 680 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Maxy

  • Habitual
  • *
  • Puntos: 42
  • Mensajes: 18
  • Sexo: Masculino
  • De camino al exito de Game Maker
    • Ver Perfil
Veran, tengo un objeto y sprite Que son ''Puerta cerrada'' y ''Puerta abierta''
Quiero que cuando mi jugador se acerque a la puerta cerrada se abra la puerta y cuando me aleje se cierre por si sola...
Si pueden ayudarme se los agradeceria mucho  :-[  :)

Tio Max
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado penumbra

Respuesta #1 en: Noviembre 01, 2015, 06:01:59 am
En el objeto puerta:

[CREATE]
image_speed = 0

[STEP]
if distance_to_object(obj_player) < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada

Cambia el 64 por la distancia que creas conveniente.
« última modificación: Noviembre 01, 2015, 06:13:13 am por penumbra »

 


Desconectado Maxy

  • Habitual
  • *
  • Puntos: 42
  • Mensajes: 18
  • Sexo: Masculino
  • De camino al exito de Game Maker
    • Ver Perfil
Respuesta #2 en: Noviembre 02, 2015, 12:25:55 am
Gracias, me funciono jejejeje, pero... Quisiera si me podrias responder algo....

Veras... Quise probarlo si podia hacerlo con otros 2 jugadores mas, con el mismo objeto, pero... No me salio...  :-[
Entre 3 jugadores y la misma puerta, solamente reconoce a 1 jugador y los otros 2 no...
¿Me podrias decir como puedo hacer?  :'(

Gracias :3

Tio Max
 


Desconectado penumbra

Respuesta #3 en: Noviembre 02, 2015, 12:43:39 am
Si las tres instancias jugador pertenecen al mismo objeto, puedes cambiar el código en [STEP] a
if instance_nearest(x, y, obj_player)  < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada


 


Desconectado Maxy

  • Habitual
  • *
  • Puntos: 42
  • Mensajes: 18
  • Sexo: Masculino
  • De camino al exito de Game Maker
    • Ver Perfil
Respuesta #4 en: Noviembre 02, 2015, 12:59:00 am
Mmmm ahora simplemente no me reconoce a ninguno....

Imaginate que tengo el jugado P1 , P2 y P3

El P1 Pasa por la puerta y se abre perfectamente
Pero al pasar el P2 y P3 no se abre y se queda cerrada...

¿Me podrias ayudar? :c

Gracias... Yyy perdon por las molestas :'v

Tio Max
 


Desconectado Guacusio

Respuesta #5 en: Noviembre 02, 2015, 01:05:24 am
Entonces probablemente los jugadores no son instancias de un mismo objeto sino que son instancias de objetos diferentes. Si los 3 jugadores tienen los mismos códigos y eventos, conviene poner éstos en uno solo (por ejemplo, en P1) y hacer que éste sea el parent de los otros, y medir la distancia a este objeto. Si tienen distintos códigos en sus eventos, puedes crear un nuevo objeto (por ejemplo, P) sin ningún evento, hacer que sea parent de los otros 3 objetos y medir la distancia a P.


 


Desconectado Maxy

  • Habitual
  • *
  • Puntos: 42
  • Mensajes: 18
  • Sexo: Masculino
  • De camino al exito de Game Maker
    • Ver Perfil
Respuesta #6 en: Noviembre 02, 2015, 01:10:39 am
Mmmm no entendi esto, por que la verdad no me funciono....



Si las tres instancias jugador pertenecen al mismo objeto, puedes cambiar el código en [STEP] a
if instance_nearest(x, y, obj_player)  < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada
« última modificación: Noviembre 02, 2015, 01:38:42 am por Maxy »

Tio Max
 


Desconectado Guacusio

Respuesta #7 en: Noviembre 02, 2015, 02:00:40 am
Mmmm no entendi esto, por que la verdad no me funciono....



Si las tres instancias jugador pertenecen al mismo objeto, puedes cambiar el código en [STEP] a
if instance_nearest(x, y, obj_player)  < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada

Probablemente lo que penumbra quiso decir fue esto:

Código: [Seleccionar]
if distance_to_object(instance_nearest(x, y, obj_player))  < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada

que es lo que se requiere hacer cuando hay más de un jugador, puesto que es necesario encontrar primero cuál instancia del objeto jugador es la más cercana a la puerta antes de medir a qué distancia está.

EDIT: leyendo la descripción de la función distance_to_object (tanto para  :GM8: como para  :GMS:), ya está incluido en ella el tomar la instancia más cercana, así que el código original que puso penumbra debiera ser suficiente:

Código: [Seleccionar]
if distance_to_object(obj_player) < 64
     sprite_index = spr_puerta_abierta
else
     sprite_index = spr_puerta_cerrada

Esto funciona si los jugadores son instancias del mismo objeto obj_player. Como sólo te funciona para uno de los 3 jugadores, se deduce que estás usando objetos distintos para cada jugador. En ese caso, aplica lo que dije antes sobre los parent.
« última modificación: Noviembre 02, 2015, 02:08:57 am por Guacusio »


 


Desconectado kostra

  • Legendario
  • *
  • Puntos: 2545
  • Mensajes: 2.088
  • Agradecido: 111 veces
  • Sexo: Femenino
  • Sé literalmente el sentido de la vida.
    • Ver Perfil
Respuesta #8 en: Noviembre 02, 2015, 12:11:35 pm
if distance_to_object(player1) or distance_to_object(player2)  or distance_to_object(player3) ...

Nadie le dice de ser más de un objeto distinto? xD

"ola k ase clickarme o k ase"
la imagen no se quita xD
 


Desconectado penumbra

Respuesta #9 en: Noviembre 02, 2015, 08:00:36 pm
Si los objetos que abren las puertas son objetos distintos en el árbol de recursos, entonces a todos esos objetos les puedes asignar un MISMO objeto padre (botón "parent") vacío (sin código ni sprite), como mencionó antes Guacusio.

Despues, en el código original, cambias obj_player por el nombre del objeto parent y con eso, los tres objetos podrían abrir la puerta.
« última modificación: Noviembre 02, 2015, 08:12:10 pm por penumbra »

 


Desconectado Maxy

  • Habitual
  • *
  • Puntos: 42
  • Mensajes: 18
  • Sexo: Masculino
  • De camino al exito de Game Maker
    • Ver Perfil
Respuesta #10 en: Noviembre 03, 2015, 02:02:59 am
Yyyy como hago el ''Parent'' :'v

Tio Max
 


Desconectado penumbra

Respuesta #11 en: Noviembre 03, 2015, 02:10:07 am
El parent es en principio un objeto vacío, sólo necesitas darle un nombre. Luego, para hacer que OTRO objeto sea hijo de ese parent, usas el botón parent (en ese otro objeto). El parent también puede contener código, pero eso es harina de otro costal y no es necesario para el caso de este hilo.



Más información:
http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/more%20about%20objects/parents.html
« última modificación: Noviembre 03, 2015, 02:19:50 am por penumbra »