void PointTrackTarget() { Ray ray = new Ray(PodCamera.transform.position, PodCamera.transform.forward); RaycastHit hit; Debug.DrawRay(PodCamera.transform.position, PodCamera.transform.forward, Color.green); if (Physics.Raycast(ray, out hit) == true) { Debug.Log(hit.transform.name); TargetDesignatorSphere.transform.position = hit.point; TargetDesignatorSphere.radius = hit.collider.bounds.size.magnitude; TargetPosition = hit.transform.position; _trackTransform = hit.transform; UpdateTrackingState(TRACK_STATE.POINT); StartCoroutine(UpdatePointTrack()); OnTargetTrack?.Invoke(); } else { Debug.LogWarning("POINT track failed due to no defined object in view frustrum!"); AreaTrackTarget(); } }
void AreaTrackTarget() { UpdateTrackingState(TRACK_STATE.AREA); Ray ray = new Ray(PodCamera.transform.position, PodCamera.transform.forward); RaycastHit hit; Debug.DrawRay(PodCamera.transform.position, PodCamera.transform.forward, Color.green); if (Physics.Raycast(ray, out hit) == true) { TargetPosition = hit.point; TrackingState = TRACK_STATE.AREA; } else { TargetPosition = ray.GetPoint(5.0f); } OnTargetTrack?.Invoke(); }