示例#1
0
    private bool CheckForInteractableMachine(out MachinePlayerInteraction interactableMachine)
    {
        Ray _ray = new Ray(this.transform.position - new Vector3(0f, -0.5f, 0f), this.transform.forward);

        RaycastHit[] _hits = Physics.RaycastAll(_ray, characterController.radius * 2f);

        RaycastHit _nearestMachineHit = new RaycastHit();
        float      _smallestDistance  = characterController.radius * 2.1f;
        bool       _hasHitMachine     = false;

        foreach (RaycastHit hit in _hits)
        {
            if (hit.collider.tag == "Machine")
            {
                float _distance = Vector3.Distance(hit.point, this.transform.position);
                if (_distance < _smallestDistance)
                {
                    _smallestDistance  = _distance;
                    _nearestMachineHit = hit;
                    _hasHitMachine     = true;
                }
            }
        }

        bool _hasHitInteractableMachine = false;

        interactableMachine = null;
        if (_hasHitMachine)
        {
            interactableMachine = _nearestMachineHit.collider.GetComponent <MachinePlayerInteraction> ();
            if (!interactableMachine.Equals(null))
            {
                _hasHitInteractableMachine = true;
            }
        }

        return(_hasHitInteractableMachine);
    }