예제 #1
0
    void Update()
    {
        if (Input.GetButtonDown(useString) && !Computer.usingComputer)
        {
            RaycastHit hit;

            if (Physics.Raycast(transform.position, transform.forward, out hit, 2.0f) &&
                hit.collider.gameObject.tag.Equals(interactableString, System.StringComparison.Ordinal))
            {
                GameObject intGO = hit.collider.gameObject;
                interactableObject = intGO.GetComponent <Interactable>();
                if (interactableObject == null)
                {
                    interactableObject = intGO.GetComponentInChildren <Interactable>();
                }
                //Debug.DrawLine(hit.point, playerCam.position, Color.green, 10.0f);
                if (Time.timeScale > 0f)
                {
                    if (interactableObject.freezePlayer)
                    {
                        RigidbodyFirstPersonController.frozen = true;
                    }

                    if (interactableObject.GetType() == typeof(PhysObj))
                    {
                        PhysObj physObject = (PhysObj)interactableObject;
                        if (!physObject.playerCarrying)
                        {
                            EventManager.TriggerEvent("Activate" + interactableObject.gameObject.name);
                        }
                        else
                        {
                            EventManager.TriggerEvent("Drop" + interactableObject.gameObject.name);
                        }
                    }
                    else
                    {
                        EventManager.TriggerEvent("Activate" + interactableObject.gameObject.name);
                    }
                }
            }
            else if (Physics.Raycast(transform.position, transform.forward, out hit, 2.0f) &&
                     hit.collider.gameObject.tag.Equals(inventoryString, System.StringComparison.Ordinal))
            {
                GameObject invGO = hit.collider.gameObject;
                try
                {
                    InventoryObject objToAdd = invGO.GetComponent <InventoryObjectScript>().inventoryObj;
                    string          hitName  = hit.collider.name;
                    AddToInventory(objToAdd, hitName);
                    Destroy(invGO);
                }
                catch (System.Exception ex)
                {
                    Debug.LogError("Inventory exception: " + ex.Message);
                }
            }
            else
            {
                if (physObjParent.childCount > 0)
                {
                    PhysObj heldObj = physObjParent.GetChild(0).gameObject.GetComponent <PhysObj>();
                    heldObj.DropLogic();
                }
                //Debug.DrawRay(playerCam.position, playerCam.forward*2, Color.yellow, 10.0f);
            }
        }
        else if (Input.GetKeyDown(KeyCode.Escape) && !Computer.usingComputer)
        {
            if (RigidbodyFirstPersonController.frozen)
            {
                RigidbodyFirstPersonController.frozen = false;
            }
            else
            {
                Application.Quit();
            }
        }
    }