Septiembre 19, 2014, 02:44:37 PM Ultima modificación: Septiembre 19, 2014, 05:20:06 PM por kostra
Buenas, quizás ya lo han preguntado, pero no se me ocuren con qué términos buscarlo mi dproblema es...

En mi actual proyecto, he de poner muchísimas puertas que se abren con pulsadores, pero claro, no me gustaría tener un milón de objetos (botonA,puertaA,botonBpuertaB,botonC,puertaC...), he intentado ponerle un a id a la puerta la cual podría cambiar el valor al poner el objeto en la room, pero claro... no tengo ni iea de cómo podría hacer que se abra (instance_destroy(); nada más), es decir no sé cómo puedo poner algo como...

"if "la id de una puerta" == "la id del boton que he pulsado"
{
   with "puerta con ese id" instance_destroy();
}

Aunque si saben alguna otra manera distinta, no importa cómo, pero todo será mejor que tener que hacer un objeto para cada uno/a :S, por cierto, por si supusiese un problema, pondré un solo boton por id, pero más de una puerta con el mismo id (para que se etntienda digo "id").

PD: No soy iniciado en GM, pueden hablar chino si lo desean xd
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Hola kostra, se me ocurren varias soluciones así que te las dejo todas y tu eliges la que más te guste:

1:


with(puerta)
{
if id=100001 and other.id=100004 { instance_destroy(); }
}


Cambia el 100001 y 100004 por el id de la puerta que quieras y del botón que quieras (respectivamente).
Aunque justamente esta no te la recomiendo mucho a no ser que vayas con cuidado porque si hicieras algún cambio en la room (quitar una puerta por error y luego volverla a poner), las id cambiarían y tendrías que rehacer el código.

2:

Objeto del botón:
if x=32 and y=64 { with(instance_nearest(128,144,puerta)) { instance_destroy(); } } else
if x=80 and y=96 { with(instance_nearest(240,320,puerta)) { instance_destroy(); } }

Y así con todas las puertas.
Este está bien porque todo el código está en el mismo sitio, pero si un día decides cambiar de lugar una puerta tendrás que revisar el código para cambiarle las coordenadas.


3:
Y la que creo que sería la más práctica sería añadirle un "creation code" (control+click derecho sobre la instancia en la room) a cada instancia de botón y cada instancia de puerta con:

identidad=0
Cada botón con una identidad, y cada puerta con otra identidad. De tal forma que el botón con identidad 0 abra la puerta con identidad 0, el botón 1 con la puerta 1, etc.

Entonces cuando tocas un botón:

with(puerta) { if identidad=other.identidad { instance_destroy(); } }

El único problema que veo es que una parte estaría en el objeto y la otra en el "creation code", y a lo mejor al tenerlo separado no te es cómodo.



Así que espero que alguno de los 3 métodos se ajuste a lo que necesitabas.
¡Saludos!

with(puerta) { if identidad=other.identidad { instance_destroy(); } }

ESTO! es juuuuuustamente lo que he preguntado! :D me quedo con esta jeje, funciona a la primera, simplemente no se me ocurría cómo poner la sintaxi en la colisión, ya tenía puesto en creation code la variable "ide" en ambos, lo he probado y funciona a la megaperfección, he puesto más de un boton y puerta por si acaso, todo bien :) muchas gracias, eres un hacha!! :D
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]


bueno mintras cierran o no... saben si hay alguna manera de copiar y pegar una instancia que ya enga un code?, es para no tener que poner manualmente el código de cada puerta T_T que palazo, son demasiadas xd (GM80)
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Cita de: kostra en Septiembre 19, 2014, 11:18:38 PM
bueno mintras cierran o no... saben si hay alguna manera de copiar y pegar una instancia que ya enga un code?, es para no tener que poner manualmente el código de cada puerta T_T que palazo, son demasiadas xd (GM80)

Hay dos opciones:

1) Usa scripts, así solo llamas al script en la instancia que quieras. Es una sóla línea en lugar muchas líneas de código
2) Usar un objeto padre que defina el comportamiento general de las puertas (sin conocer de que va tu juego, me inclinaría por esto). Así todas las puertas le harían caso al comportamiento del padre sin tener que pegar código en cada una de ellas


1) el código para cada puerta es "ide = x", nada más, solo hago copypaste y cambio la letra xd
2) un padre serviría para mil objetos en mil puertas, pero como ves en este tema, ahora solo uso una sola puerta y un soo botón xD, hablo de hacer copypaste de la INSTANCIA, en la room, mientras la estoy editando xd :P
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Creo que eso no se puede hacer. En esos casos he usado el creation code como dijo TheSandBoxMKG

bueno pues a currar toca, si lo llego a saber no dibujo tantas pertecitas en los mapas jajajajja, bueno, plis no contestéis más que me tentais a responder y el tema ya esta resuelto, que me echarán bronca, ya pueden cerrar :D
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]