コード例 #1
0
ファイル: PlayerController.cs プロジェクト: Slympp/GetOut
        private void UpdateTarget()
        {
            if (Physics.Raycast(_camera.ScreenPointToRay(Input.mousePosition), out var hit, Mathf.Infinity, InteractableMask))
            {
                // Selection
                GameObject target = hit.collider.gameObject;
                if (target.CompareTag("Activity"))
                {
                    if (_isHovering)
                    {
                        if (_cachedHoveredGameObject != target)
                        {
                            SetHovering(target);
                        }
                    }
                    else
                    {
                        SetHovering(target);
                    }
                }
                else
                {
                    SetHovering(null);
                }

                // Interaction (Movement && Activities)
                if (Input.GetMouseButtonDown(0) && CurrentState != State.Busy)
                {
                    StopAllCoroutines();
                    if (hit.collider.CompareTag("Ground"))
                    {
                        StartCoroutine(MoveTo(hit.point, null, Vector3.zero));
                    }

                    if (hit.collider.CompareTag("Activity"))
                    {
                        BaseActivity activity = hit.collider.gameObject.GetComponent <BaseActivity>();
                        if (activity == null)
                        {
                            return;
                        }

                        void DoActivity() => StartCoroutine(activity.Do(SetState));

                        StartCoroutine(MoveTo(activity.GetRigPosition(), DoActivity, activity.transform.position));
                    }
                }
            }