// Update is called once per frame void Update() { foreach (PoissonDot pDot in dots) { Vector3 dir = pDot.transform.position - head.position; Ray ray = new Ray(head.position, dir.normalized); RaycastHit hit; Physics.Raycast(ray, out hit, dir.magnitude, layerToCastOn); if (hit.collider) { PoissonDot otherDot = hit.collider.GetComponent <PoissonDot>(); if (otherDot == pDot) { if (ShouldRenderLOSLines) { Debug.DrawLine(transform.parent.position, pDot.transform.position, Color.cyan); } pDot.InFieldOfView(); } } } if (Input.GetKeyUp(KeyCode.F1)) { ShouldRenderLOSLines = !ShouldRenderLOSLines; } }
//void OnTriggerStay(Collider other) //{ //PoissonDot pDot = other.GetComponent<PoissonDot>(); //if (pDot) { // Vector3 dir = other.transform.position - head.position; // Ray ray = new Ray(head.position, dir.normalized); // RaycastHit hit; // Physics.Raycast(ray, out hit, dir.magnitude, layerToCastOn); // if (hit.collider && hit.collider.Equals(other)) // pDot.InFieldOfView(); // //Debug.DrawLine(transform.parent.position, other.transform.position, Color.green); //} //} void OnTriggerExit(Collider other) { PoissonDot pDot = other.GetComponent <PoissonDot>(); if (pDot) { dots.Remove(pDot); } }
void OnTriggerEnter(Collider other) { PoissonDot pDot = other.GetComponent <PoissonDot>(); if (pDot) { dots.Add(pDot); } }