GMS2: instance_find()

introducción:

Todas las instancias en el cuarto poseen una «id» diferente (un numero que los identifica y separa del resto , ej: 1000001), a veces por distintas circunstancias necesitaremos encontrar la ubicación de un objeto en especifico, es aquí donde entra esta función .

Contenido:

Instance_find() nos regresará la «id» de un objeto que especifiquemos, para esto colocaremos en la función el objeto a buscar, y su numero.

Supongamos que tenemos 5 objetos «enemigos» en el cuarto y queremos encontrar al numero 3 de ellos

var f = instance_find(obj_enemigo,3);

Este código guardará la «id»(el objeto) en la variable local «f» para ser usada posteriormente, esto quiere decir que la variable «f» ahora hace referencia al obj_enemigo numero 3.

Ahora que a sido localizado este enemigo podemos, por ejemplo, destruirlo.

instance_destroy(f)

Pero no solo podremos hacer esto, que tal si necesitamos encontrar un objeto enemigo con distintos colores?. Para esto necesitaremos un código un poco mas extenso.

Primero crearemos a nuestro enemigo, cuyas sub-imagenes sean de distintos colores.

Lo llamaremos «obj_enemy», y además en el evento «créate» dejaremos su image_speed en 0:

Vamos al cuarto de pruebas y colocaremos 6 de estos objetos con distintos colores, podremos editar su imagen desde el mismo editor:

Por ultimo crearemos un nuevo objeto llamado «obj_search», el se encargará de buscar a nuestro enemigo.

En el evento «DRAW» del objeto «obj_search» colocaremos el siguiente codigo:

for (var i = 0; i < instance_number(obj_enemy); ++i;)
    {
        pos[i] = instance_find(obj_enemy,i);
	 if pos[i].image_index == 0 {
		 draw_text(pos[i].x-32,pos[i].y+12,"AQUI ESTOY")
		 }
	
    }

Este ciclo se ejecutará por la cantidad de instancias de enemigos «instance_number», en este caso hay 6. Luego guardará en el array «pos[i]» las «IDs» de las instancias gracias a instance_find(). Por ultimo tendremos un «if» el cual preguntará a cada una los las «IDs» obtenidas cual de ellas tiene el color seleccionado(en este caso «0» representa a rojo, ya que es la primera sub-imagen del sprite enemigo)

Al encontrar a nuestro enemigo «rojo» , dibujará un texto, en la posicion de ese enemigo(pos[i].x-32,pos[i].y+12 ) y un texto para verificar que este bien.

Al final tendremos este resultado:

podemos cambiar la «image_index» a buscar para encontrar a los otros colores.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

Subir ↑

A %d blogueros les gusta esto: