Exemple #1
0
    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();
        }
    }
Exemple #2
0
    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();
    }