private void Update()
    {
        Ray        ray = new Ray(transform.position, transform.forward);
        RaycastHit raycastHit;

        if (Physics.Raycast(ray, out raycastHit, interactDistance, layermask))
        {
            // если рука не отображается
            if (!handImage.gameObject.activeSelf)
            {
                // включаем картинку
                handImage.gameObject.SetActive(true);
            }
            // если нажата "E"
            if (Input.GetKeyDown(KeyCode.E))
            {
                // если в поле обзора записка
                if (raycastHit.transform.tag == "Paper")
                {
                    // включить изображение записки
                    paperPanel.gameObject.SetActive(true);
                    //отключить игрока
                    playerController.enabled = false;
                }
                // если в поле обзора свеча
                if (raycastHit.transform.tag == "Candle")
                {
                    // получить объект свечу
                    Candle candle = raycastHit.transform.GetComponent <Candle>();
                    if (candle != null)
                    {
                        // зажечь/потушить свечу
                        candle.ChangeLight();
                    }
                }
            }
            // если нажата "Esc"
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                // отключить изображение записки
                paperPanel.gameObject.SetActive(false);
                //отключить игрока
                playerController.enabled = true;
            }
        }
        else
        {
            // выключаем картинку с рукой
            handImage.gameObject.SetActive(false);
        }
    }
Example #2
0
    private void Update()
    {
        Ray        ray = new Ray(transform.position, transform.forward);
        RaycastHit raycastHit;

        if (Physics.Raycast(ray, out raycastHit, interactDistance, layerMask))
        {
            // если рука не отображается
            if (!handImage.gameObject.activeSelf)
            {
                // показать картинку
                handImage.gameObject.SetActive(true);
            }
            Debug.Log("Ray hit object: " + raycastHit.transform.name);
            // если нажата клавиша Е
            if (Input.GetKeyDown(KeyCode.E))
            {
                // если смотрю на батарейки
                if (raycastHit.transform.tag == "Battery")
                {
                    // пополнить заряд фонарика
                    flashLight.AddEnergy();
                    // уничтожить батарейки
                    Destroy(raycastHit.transform.gameObject);
                }
                if (raycastHit.transform.tag == "Paper")
                {
                    //Включаем панель
                    paperPanel.SetActive(true);
                    //Отключаем игрока
                    playerController.enabled = false;
                }
                //если смотрю на ключ
                if (raycastHit.transform.tag == "Key")
                {
                    //вызов метода подбора в ключе
                    Key key = raycastHit.transform.GetComponent <Key>();
                    if (key != null)
                    {
                        key.PickUp();
                    }
                }
                if (raycastHit.transform.tag == "Candle")
                {
                    // получить объект свечу
                    Candle candle = raycastHit.transform.GetComponent <Candle>();
                    if (candle != null)
                    {
                        // зажечь/потушить свечу
                        candle.ChangeLight();
                    }
                }
                if (raycastHit.transform.tag == "Door")
                {
                    if (hasKey == false)
                    {
                        //проиграть звук закрытой двери
                        // AudioSource
                        Door door = raycastHit.transform.GetComponent <Door>();
                        if (door != null)
                        {
                            door.ChangeDoorState();
                        }
                    }
                }
                if (raycastHit.transform.tag == "FirstAid")
                {
                    gameObject.GetComponentInParent <HealthHero>().Heal();
                    Destroy(raycastHit.transform.gameObject);
                }
                if (raycastHit.transform.tag == "WoodCodeBox")
                {
                    gameObject.GetComponentsInParent <RigidbodyFirstPersonController>()[0].enabled = false;
                    woodBoxPanel.SetActive(true);
                    woodBox = raycastHit.transform.gameObject;
                }
            }
            else if (Input.GetKeyDown(KeyCode.Escape))
            {
                if (raycastHit.transform.tag == "Paper" && isReading)
                {
                    gameObject.GetComponentsInParent <RigidbodyFirstPersonController>()[0].enabled = true;
                    isReading = false;
                    paperPanel.SetActive(false);
                }
                else if (raycastHit.transform.tag == "WoodCodeBox")
                {
                    woodBoxPanel.SetActive(false);
                    gameObject.GetComponentsInParent <RigidbodyFirstPersonController>()[0].enabled = true;
                }
            }
        }
        else
        {
            //выключаем картинку
            handImage.gameObject.SetActive(false);
        }
    }