Exemplo n.º 1
0
        protected override void ChangeLeverState(GameObject lever)
        {
            if (lever.name.StartsWith("Lever"))
            {
                Lever leverScript = lever.GetComponent <Lever>();
                lever.GetComponent <AudioSource>().Play();

                if (leverScript.active)
                {
                    leverScript.DisactiveLever();
                }
                else
                {
                    leverScript.ActivateLever();
                }
            }
            else
            {
                // It is a fake
                FakeLever leverScript = lever.GetComponent <FakeLever>();
                if (leverScript.active)
                {
                    leverScript.DisactiveLever();
                }
                else
                {
                    leverScript.ActivateLever();
                }
            }
        }
Exemplo n.º 2
0
    void PickUp()
    {
        int sphereRadius = 5;

        Debug.Log("Trying to Pick Up");
        //if (isHolding)
        //{
        //    Debug.Log("Im gonna drop it");
        //    DropIt();
        //}
        Collider[] nearObjects = Physics.OverlapSphere(transform.position, sphereRadius);
        foreach (Collider obj in nearObjects)
        {
            Vector3 difference = (obj.transform.position - transform.position);
            switch (obj.gameObject.tag)
            {
            case "Pickable":
            {
                //Generating vector to make the dot product
                Vector3 frontPoint = transform.position + (transform.forward * 4.0f);
                Vector3 front      = frontPoint - transform.position;
                //Generated the vector for the dot product

                if ((Vector3.Dot(difference, front) / front.sqrMagnitude) > .25f && (Vector3.Dot(difference, front) / front.sqrMagnitude) < 2.0f)
                {
                    carryingObject = obj.gameObject;
                    carryingObject.transform.SetParent(transform);
                    beforeGrabRotation = transform.rotation;
                    //carryingObject.GetComponent<Rigidbody>().useGravity = false;
                    //we apply the same rotation our main object (Camera) has.
                    //carryingObject.transform.localRotation = transform.rotation;
                    isHolding = true;
                    break;
                }
            }
            break;

            case "Key":
            {
                playerScript.hasKey = true;
                isHolding           = true;
                carryingObject      = obj.gameObject;
                carryingObject.transform.SetParent(transform);
                carryingObject.transform.localPosition = transform.forward;
                Instantiate(FloatingKeyText, transform.position, Quaternion.Euler(0, 45, 0), transform);
                carryingObject.tag = null;
                //Destroy(carryingObject);
            }
            break;

            case "Grabable":
            {
                isHolding      = true;
                carryingObject = obj.gameObject;

                isGrabbing = true;
                transform.LookAt(carryingObject.transform);
                carryingObject.transform.SetParent(transform);
                carryingObject.transform.localPosition = transform.forward * 2;
                //carryingObject.transform.localPosition = transform.position + offset;
                playerScript.movState = CharControl.PLAYER_STATE.GRABING;
            }
            break;

            case "Door":
            {
                carryingObject = obj.gameObject;
                if (playerScript.hasKey)
                {
                    carryingObject.GetComponent <Renderer>().enabled    = false;
                    carryingObject.GetComponent <BoxCollider>().enabled = false;
                }
                else
                {
                    Instantiate(doorText, transform.position, Quaternion.Euler(0, 45, 0), transform);
                }
            }
            break;

            case "Interactable":
            {
                carryingObject = obj.gameObject;
                leverScript    = carryingObject.GetComponent <Lever>();
                leverScript.ActivateLever();
            }
            break;
            }
            //if (obj.gameObject.tag == "Pickable" && obj.gameObject != carryingObject)
            //{
            //    //Generating vector to make the dot product
            //    Vector3 frontPoint = transform.position + (transform.forward * 2.0f);
            //    Vector3 front = frontPoint - transform.position;
            //    //Generated the vector for the dot product

            //    if ((Vector3.Dot(difference, front) / front.sqrMagnitude) > .25f && (Vector3.Dot(difference, front) / front.sqrMagnitude) < 2.0f)
            //    {
            //        carryingObject = obj.gameObject;
            //        carryingObject.transform.SetParent(transform);
            //        beforeGrabRotation = transform.rotation;
            //        //carryingObject.GetComponent<Rigidbody>().useGravity = false;
            //        //we apply the same rotation our main object (Camera) has.
            //        //carryingObject.transform.localRotation = transform.rotation;
            //        isHolding = true;
            //        break;
            //    }
            //}
            //else if (obj.gameObject.tag == "Key" && obj.gameObject != carryingObject)
            //{
            //    playerScript.hasKey = true;
            //    carryingObject = obj.gameObject;
            //    Instantiate(FloatingKeyText, transform.position, Quaternion.Euler(0, 45, 0), transform);
            //    Destroy(carryingObject);
            //}
            //else if (obj.gameObject.tag == "Grabable" && obj.gameObject != carryingObject)
            //{
            //    isHolding = true;
            //    carryingObject = obj.gameObject;
            //    carryingObject.transform.SetParent(transform);
            //    playerScript.movState = CharControl.PLAYER_STATE.GRABING;
            //}
            //else if (obj.gameObject.tag == "Grabable" && obj.gameObject != carryingObject)
            //{
            //    isHolding = true;
            //    carryingObject = obj.gameObject;
            //    carryingObject.transform.SetParent(transform);
            //    playerScript.movState = CharControl.PLAYER_STATE.GRABING;
            //}
        }
    }
Exemplo n.º 3
0
    void OnInteraction(GameObject interactableObject)
    {
        //Vector3 front = frontPoint - transform.position;
        if (!m_isHolding)
        {
            if (m_GOInteractedObject)
            {
                switch (m_GOInteractedObject.tag)
                {
                case "Pickable":
                {
                    Vector3 frontPoint = transform.position + transform.forward * 4;
                    m_GOcarryingObject = m_GOInteractedObject;
                    m_carryingObjectRB = m_GOcarryingObject.GetComponent <Rigidbody>();
                    m_GOcarryingObject.transform.SetParent(transform);
                    m_GOcarryingObject.transform.position = frontPoint /*m_GOHand.transform.position*/;
                    m_carryingObjectRB.freezeRotation     = true;
                    m_carryingObjectRB.constraints        = RigidbodyConstraints.FreezePosition;
                    Physics.IgnoreCollision(gameObject.GetComponent <Collider>(), m_GOcarryingObject.GetComponent <Collider>());
                    m_carryingObjectRB.useGravity = false;
                    m_isHolding = true;

                    //m_ract
                }
                break;

                case "Key":
                {
                    Vector3 frontPoint = transform.position + transform.forward * smallItem;
                    m_isHolding           = true;
                    m_playerScript.hasKey = true;
                    m_GOcarryingObject    = m_GOInteractedObject;
                    m_carryingObjectRB    = m_GOcarryingObject.GetComponent <Rigidbody>();
                    m_GOcarryingObject.transform.SetParent(transform);
                    m_GOcarryingObject.transform.position = frontPoint;
                    m_carryingObjectRB.freezeRotation     = true;
                    m_carryingObjectRB.constraints        = RigidbodyConstraints.FreezePosition;
                    m_carryingObjectRB.useGravity         = false;
                    m_playerScript.m_interactObject       = null;
                    Instantiate(m_GOFloatingKeyText, transform.position, Quaternion.Euler(0, 45, 0), transform);
                    //Destroy(carryingObject);
                }
                break;

                case "Grabable":
                {
                    m_isHolding        = true;
                    m_isGrabbing       = true;
                    m_GOcarryingObject = m_GOInteractedObject;
                    Vector3 frontPoint = new Vector3(front.transform.position.x, m_GOcarryingObject.transform.position.y, front.transform.position.z);
                    m_carryingObjectRB = m_GOcarryingObject.GetComponent <Rigidbody>();
                    //transform.LookAt(m_GOcarryingObject.transform);


                    m_GOcarryingObject.transform.position = frontPoint;
                    m_carryingObjectRB.freezeRotation     = true;
                    m_carryingObjectRB.constraints        = RigidbodyConstraints.FreezePosition;
                    m_carryingObjectRB.useGravity         = false;
                    m_playerScript.movState = CharControl.PLAYER_STATE.GRABING;
                    m_GOcarryingObject.transform.SetParent(transform);
                    Debug.Log("Im grabbing bb");
                }
                break;

                case "Door":
                {
                    Instantiate(m_GODoorText, transform.position, Quaternion.Euler(0, 45, 0), transform);
                }
                break;

                case "Interactable":
                {
                    m_leverScript = m_GOInteractedObject.GetComponent <Lever>();
                    m_leverScript.ActivateLever();
                }
                break;
                }
            }
        }
        else if (m_isHolding)
        {
            if (m_GOcarryingObject.tag == "Key")
            {
                if (m_GOInteractedObject)
                {
                    if (m_GOInteractedObject.tag == "Door")
                    {
                        m_GOInteractedObject.GetComponent <Renderer>().enabled    = false;
                        m_GOInteractedObject.GetComponent <BoxCollider>().enabled = false;
                        Destroy(m_GOcarryingObject);
                        m_isHolding = false;
                    }
                    else
                    {
                        DropIt();
                    }
                }
                else
                {
                    DropIt();
                }
            }
            else
            {
                DropIt();
                m_playerScript.movState = CharControl.PLAYER_STATE.WALKING;
            }
        }
    }