public IEnumerable <GridEntity> Query() { if (isBox) { var h = height * 0.5f; var w = width * 0.5f; //posicion inicial --> esquina superior izquierda de la "caja" //posición final --> esquina inferior derecha de la "caja" //como funcion para filtrar le damos una que siempre devuelve true, para que no filtre nada. return(targetGrid.Query( transform.position + new Vector3(-w, 0, -h), transform.position + new Vector3(w, 0, h), x => true)); } else { //creo una "caja" con las dimensiones deseadas, y luego filtro segun distancia para formar el círculo return(targetGrid.Query( transform.position + new Vector3(-radius, 0, -radius), transform.position + new Vector3(radius, 0, radius), x => { var position2d = x - transform.position; position2d.y = 0; return position2d.sqrMagnitude < radius * radius; })); } }
public IEnumerable <GridEntity> Query() { if (isBox) { var h = height * 0.5f; var w = width * 0.5f; //posicion inicial --> esquina superior izquierda de la "caja" //posición final --> esquina inferior derecha de la "caja" //como funcion para filtrar le damos una que siempre devuelve true, para que no filtre nada. return(targetGrid.Query( transform.position + new Vector3(-w, 0, -h), transform.position + new Vector3(w, 0, h), x => true)); } else { //creo una "caja" con las dimensiones deseadas, y luego filtro segun distancia para formar el círculo return(targetGrid.Query( transform.position + new Vector3(-radius, 0, -radius), transform.position + new Vector3(radius, 0, radius), x => { //o sea X seria la posicion del GridEntity que estoy checkeando var position2d = x - transform.position; // obtengo el vector direccion entre el grid entity y mi posicion, o sea seria un vector que apunta desde (0,0) hasta la posicion del GridEntity que estoy checkeando position2d.y = 0; //este eje no lo usamos return position2d.sqrMagnitude < radius * radius; //de mi vector normalizado obtengo la distancia, y si esa distancia es menor al radio entonces cumple. })); } }
public IEnumerable <GridEntity> Query() { Debug.LogWarning("LA QUERY SE EJECUTA"); return(targetGrid.Query( transform.position + new Vector3(-r, 0, -r), transform.position + new Vector3(r, 0, r), x => Vector3.Distance(transform.position, x) <= r)); }
public IEnumerable <GridEntity> Query() => grid.Query( transform.position + new Vector3(-radius, 0, -radius), transform.position + new Vector3(radius, 0, radius), x => { var position2d = x - transform.position; position2d.y = 0; return(position2d.sqrMagnitude < radius * radius); });
public IEnumerable <GridEntity> Query() { var h = height * 0.5f; var w = width * 0.5f; //posicion inicial --> esquina superior izquierda de la "caja" //posición final --> esquina inferior derecha de la "caja" //como funcion para filtrar le damos una que siempre devuelve true, para que no filtre nada. return(targetGrid.Query( transform.position + new Vector3(-w, 0, -h), transform.position + new Vector3(w, 0, h), x => true)); }