コード例 #1
0
    public void Update()
    {
        if (isGrabbed && eatBoundingBox.gameObject.activeSelf)
        {
#if UNITY_EDITOR
            if (Input.GetMouseButtonDown(0))
            {
                Grab();
            }
#else
            if (Input.touchCount > 0)
            {
                if (Input.GetTouch(0).phase == TouchPhase.Ended)
                {
                    Grab();
                }
            }
#endif

            RaycastHit hit;
            if (RaycastProvider.GetRaycastHit(eatBoundingBox.raycastTargetLayer, out hit))
            {
                if (hit.point.y > transform.parent.position.y)
                {
                    transform.position = hit.point;
                }
            }
        }
    }
コード例 #2
0
    // Update is called once per frame
    void Update()
    {
        if (washToggle.isOn)
        {
            if (Input.touchCount > 0 || Input.GetMouseButton(0))
            {
                RaycastHit hit;
                if (RaycastProvider.GetRaycastHit(touchablesLayer, out hit))
                {
                    if (hit.collider.GetComponentInParent <PenguinBehavior>() == penguin)
                    {
                        _cleaningObject.transform.GetComponentInChildren <ParticleSystem>(true).gameObject.SetActive(true);
                        penguin.higiene         += Time.deltaTime * higieneIncreaseSpeed;
                        _cleaningObject.position = hit.point;
                        _cleaningObject.forward  = hit.normal;

                        penguin.audioSource.UnPause();
                        if (!penguin.audioSource.isPlaying)
                        {
                            penguin.audioSource.PlayOneShot(penguin.washAudioClip);
                        }
                    }
                }
            }
            else
            {
                _cleaningObject.transform.GetComponentInChildren <ParticleSystem>(true).gameObject.SetActive(false);
                penguin.audioSource.Pause();
            }
        }

        if ((Input.touchCount > 0 || Input.GetMouseButtonUp(0)) && !penguinBusy)
        {
            Transform touchedGOTransform = RaycastProvider.GetRaycastedTouchable(touchablesLayer.value);
            if (touchedGOTransform)
            {
                if (touchedGOTransform.GetComponentInParent <Fish>())
                {
                    touchedGOTransform.GetComponentInParent <Fish>().Grab();
                }
                else
                {
                    touchedGOTransform.GetComponentInParent <Animator>().SetTrigger("touch");

                    if (!penguin)
                    {
                        penguin = touchedGOTransform.GetComponent <PenguinBehavior>();   // if there is no such component, null will be set
                        if (penguin)
                        {
                            penguin.initialize(initialHunger, initialHappiness, initialHigiene);
                            washToggle.gameObject.SetActive(true);
                        }
                    }
                    else
                    {
                        penguin.audioSource.PlayOneShot(touchedGOTransform.GetComponent <PenguinBehavior>() ? penguin.greetingAudioClip : penguin.sealAudioClip);
                    }
                }
            }
        }

        if (penguin)
        {
            penguin.updateState();
        }
    }