Пример #1
0
    // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
    //override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    //{
    //
    //}

    // OnStateMove is called right after Animator.OnAnimatorMove()
    //override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    //{
    //    // Implement code that processes and affects root motion
    //}

    // OnStateIK is called right after Animator.OnAnimatorIK()
    //override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    //{
    //    // Implement code that sets up animation IK (inverse kinematics)
    //}

    private void FindTarget()
    {
        if (_fieldOfView.GameObjectsInView.Count > 0)
        {
            var target = _fieldOfView.GameObjectsInView.Where(x => x.tag == "Player").FirstOrDefault();

            if (target != null)
            {
                if (_characterStateMachine.TargetObject != target)
                {
                    _characterStateMachine.SetTargetObject(target);
                }
                //else
                //    _playerStateMachine.SetTargetLocation(target.transform.position);
            }
        }
    }
    public override void HandleAction(InputAction.CallbackContext ctx)
    {
        if (ctx.performed)
        {
            //if (isOrthographic)
            //{
            //    Vector2 worldPos = Camera.main.ScreenToWorldPoint(_inputHandlerMousePosition.MousePosition);
            //    //_mover.TargetPosition = worldPos;
            //    //_mover.SetTargetPosition(worldPos);
            //}
            //else
            //{
            Vector3 nearPosition = new Vector3(_inputHandlerMousePosition.MousePosition.x,
                                               _inputHandlerMousePosition.MousePosition.y,
                                               Camera.main.nearClipPlane);
            Vector3 farPosition = new Vector3(_inputHandlerMousePosition.MousePosition.x,
                                              _inputHandlerMousePosition.MousePosition.y,
                                              Camera.main.farClipPlane);

            Vector3 nearRay = Camera.main.ScreenToWorldPoint(nearPosition);
            Vector3 farRay  = Camera.main.ScreenToWorldPoint(farPosition);

            RaycastHit hitInfo;
            bool       hasHit = Physics.Raycast(nearRay, farRay, out hitInfo, maskRaycast);

            if (hasHit)
            {
                //if (useAsStateMachine)
                //{
                _playerStateMachine.SetTargetObject(hitInfo.collider.gameObject);
                _playerStateMachine.SetTargetLocation(hitInfo.point);
                //}
                //else
                //{
                //    _mover.SetTargetPosition(hitInfo.point);
                //}
            }
            else
            {
                Debug.Log("no hit");
            }
            //}
        }
    }