private TipoColision DetectarPersonajeADistancia(Vector2 direccion, int distanciaRayoEnNumeroDeCasillas = 0) { float distanciaRayoFinal = Ajustes.Instancia.tamanioCasilla; if (distanciaRayoEnNumeroDeCasillas > 1) { distanciaRayoFinal = Ajustes.Instancia.tamanioCasilla * distanciaRayoEnNumeroDeCasillas; } RaycastHit2D[] colisiones = Physics2D.RaycastAll(transform.position, direccion, distanciaRayoFinal); if (colisiones != null && colisiones.Length > 0) { for (int i = 0; i < colisiones.Length; i++) { if (colisiones[i].collider.gameObject != gameObject) { if (Herramientas.LayerSonIguales(colisiones[i].collider.gameObject.layer, Ajustes.Instancia.layerColision)) { return(TipoColision.ObjetoColision); } else if (colisiones[i].collider.gameObject.CompareTag(Ajustes.Instancia.tagPersonaje)) { return(TipoColision.Personaje); } } } } return(TipoColision.NINGUNO); }
public TipoColision DetectarColisionesEnfrente(Vector2 direccion) { Vector2 origenAreaDeteccion = (Vector2)transform.position + (direccion * Ajustes.Instancia.tamanioCasilla); Collider2D[] objetoDelante = Physics2D.OverlapBoxAll(origenAreaDeteccion, Ajustes.Instancia.TamanioAreaColisiones, 0); if (objetoDelante != null && objetoDelante.Length > 0) { for (int i = 0; i < objetoDelante.Length; i++) { if (Herramientas.LayerSonIguales(objetoDelante[i].gameObject.layer, Ajustes.Instancia.layerColision)) { return(TipoColision.ObjetoColision); } else if (objetoDelante[i].gameObject.CompareTag(Ajustes.Instancia.tagPersonaje)) { return(TipoColision.Personaje); } } } return(TipoColision.NINGUNO); }