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 :-[ :)
En el objeto puerta:
[CREATE]
[gml]image_speed = 0[/gml]
[STEP]
[gml]
if distance_to_object(obj_player) < 64
sprite_index = spr_puerta_abierta
else
sprite_index = spr_puerta_cerrada
[/gml]
Cambia el 64 por la distancia que creas conveniente.
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
Si las tres instancias jugador pertenecen al mismo objeto, puedes cambiar el código en [STEP] a
[gml]
if instance_nearest(x, y, obj_player) < 64
sprite_index = spr_puerta_abierta
else
sprite_index = spr_puerta_cerrada
[/gml]
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
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.
Mmmm no entendi esto, por que la verdad no me funciono....
Cita de: penumbra 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
[gml]
if instance_nearest(x, y, obj_player) < 64
sprite_index = spr_puerta_abierta
else
sprite_index = spr_puerta_cerrada
[/gml]
Cita de: Maxy en Noviembre 02, 2015, 01:10:39 AM
Mmmm no entendi esto, por que la verdad no me funciono....
Cita de: penumbra 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
[gml]
if instance_nearest(x, y, obj_player) < 64
sprite_index = spr_puerta_abierta
else
sprite_index = spr_puerta_cerrada
[/gml]
Probablemente lo que penumbra quiso decir fue esto:
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:
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.
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
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.
Yyyy como hago el ''Parent'' :'v
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.
(http://i.imgur.com/ebz1Xja.png)
Más información:
http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/more%20about%20objects/parents.html