private void OnSceneGUI() { ConoDeVision cv = (ConoDeVision)target; direccionVision = cv.ObtenerVectorDireccional(cv.direccionEnum); Handles.color = Color.white; Vector3 normal = cv.transform.position; normal -= new Vector3(normal.x, normal.y, normal.z - 10); //Dibujo lo que seria el circulo dentro del cual puedo captar las colisiones y ver al jugador. Handles.DrawWireArc(cv.transform.position, normal, Vector2.up, 360, cv.radio); DibujarLineasCono(cv); foreach (Transform objetivo in cv.objetivosVisibles) { Handles.color = Color.blue; Handles.DrawLine(cv.transform.position, objetivo.transform.position); } foreach (Transform objetivo in cv.objetivosEnRangoNoVisibles) { Handles.color = Color.red; Handles.DrawLine(cv.transform.position, objetivo.transform.position); } //Normal que necesito en 2D Debug.DrawRay(cv.transform.position, normal, Color.red); }
// Start is called before the first frame update void Start() { cv = enemigo.GetComponent <ConoDeVision>(); sprite = GetComponent <SpriteRenderer>(); alerta = (Sprite)AssetDatabase.LoadAssetAtPath("Assets/Sprites/Enemigos/Alertas/signo_pregunta.png", typeof(Sprite)); encontrado = (Sprite)AssetDatabase.LoadAssetAtPath("Assets/Sprites/Enemigos/Alertas/signo_exclamacion.png", typeof(Sprite)); }
void Start() { Physics2D.IgnoreLayerCollision(9, 9); cv = GetComponent <ConoDeVision>(); cv.direccionEnum = direccionVision; if (direccionVision == DireccionCono.Abajo) { GetComponent <Animator>().SetBool("MirandoAbajo", true); } }
// Si el cono de visión entra en el trigger se activa su renderer para que se vea el sprite void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.GetComponent <MovimientoEnemigo>()) { deteccion = other.gameObject.GetComponentInChildren <ConoDeVision>(); if (deteccion.CompruebaDeteccion()) { conoLuz = other.transform.GetChild(1); conoLuz.gameObject.SetActive(true); } } }
private void DibujarLineasCono(ConoDeVision cv) { //Vectores limites del cono Vector2 vectorAnguloA = cv.DireccionDesdeAngulo(-cv.angulo / 2); Vector2 vectorAnguloB = cv.DireccionDesdeAngulo(cv.angulo / 2); if (direccionVision == Vector2.down) { Handles.DrawLine(cv.transform.position, cv.transform.position - (Vector3)vectorAnguloA * cv.radio); Handles.DrawLine(cv.transform.position, cv.transform.position - (Vector3)vectorAnguloB * cv.radio); } if (direccionVision == Vector2.up) { Handles.DrawLine(cv.transform.position, cv.transform.position + (Vector3)vectorAnguloA * cv.radio); Handles.DrawLine(cv.transform.position, cv.transform.position + (Vector3)vectorAnguloB * cv.radio); } }