private void LateUpdate() { SetOrigin(Vector3.zero); float angle = StartingAngle; float angleIncrease = FieldOfViewValue / RayCount; Vector3[] vertices = new Vector3[RayCount + 1 + 1]; Vector2[] uv = new Vector2[vertices.Length]; int[] triangles = new int[RayCount * 3]; vertices[0] = Origin; int vertexIndex = 1; int triangleIndex = 0; for (int i = 0; i <= RayCount; i++) { Vector3 vertex; RaycastHit2D raycastHit2D = Physics2D.Raycast(transform.position, UtilitiesClass.GetVectorFromAngle(angle), ViewDistance, LayerMask); if (raycastHit2D.collider == null) { // No hit vertex = UtilitiesClass.GetVectorFromAngle(angle) * ViewDistance; vertex.z = transform.position.z; } else { // Hit object if (raycastHit2D.collider.gameObject.CompareTag("Player")) { EnemyBehavior.SetTargetPlayer(raycastHit2D.collider.gameObject); } vertex = (Vector3)raycastHit2D.point - transform.position; vertex.z = transform.position.z; } vertices[vertexIndex] = vertex; if (i > 0) { triangles[triangleIndex + 0] = 0; triangles[triangleIndex + 1] = vertexIndex - 1; triangles[triangleIndex + 2] = vertexIndex; triangleIndex += 3; } vertexIndex++; angle -= angleIncrease; } Mesh.vertices = vertices; Mesh.uv = uv; Mesh.triangles = triangles; }