Esempio n. 1
0
    private void Grab()
    {
        if (Input.GetButtonDown(m_Input.GetGrab()))         //For the love of god, refactor this
        {
            if (!m_PlayerState.IsHoldingObject)
            {
                m_ClosestObject = GetClosestObjectWithTag("ThrowableObject", 0.5f);

                if (m_ClosestObject != null)
                {
                    Scr_ThrowableObject throwable = m_ClosestObject.GetComponent <Scr_ThrowableObject>();
                    if (!throwable.IsHeld())
                    {
                        Debug.Log("Grabbed an object");
                        m_ClosestObject.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeAll;
                        m_ClosestObject.GetComponent <Rigidbody>().useGravity  = false;
                        m_ClosestObject.transform.parent           = transform;
                        m_ClosestObject.transform.forward          = transform.forward;
                        m_ClosestObject.transform.localPosition    = throwable.GetHoldPosition();
                        m_ClosestObject.transform.localEulerAngles = throwable.GetHoldRotation();
                        m_PlayerState.IsHoldingObject = true;
                        throwable.SetHold(true);

                        m_AnimationController.Animate("IsHoldingItem", true);
                    }
                    else
                    {
                        m_ClosestObject = null;
                    }
                }
            }
        }
    }
Esempio n. 2
0
    public void ReleaseHeldObject()
    {
        m_ClosestObject.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.None;
        m_ClosestObject.GetComponent <Rigidbody>().useGravity  = true;
        m_ClosestObject.transform.parent = null;
        m_PlayerState.IsHoldingObject    = false;

        Scr_ThrowableObject throwable = m_ClosestObject.GetComponent <Scr_ThrowableObject>();

        throwable.SetHold(false);
        m_ClosestObject = null;
    }
Esempio n. 3
0
    private void Throw()
    {
        if (Input.GetButtonDown(m_Input.GetThrow()) && m_PlayerState.IsHoldingObject)
        {
            Rigidbody rigidBody = m_ClosestObject.GetComponent <Rigidbody>();
            rigidBody.constraints = RigidbodyConstraints.None;
            rigidBody.AddForce(transform.forward * m_ThrowingForce);
            rigidBody.useGravity = true;

            Scr_ThrowableObject throwable = m_ClosestObject.GetComponent <Scr_ThrowableObject>();
            throwable.SetThrownBy(gameObject);
            throwable.SetHold(false);

            m_PlayerState.IsHoldingObject    = false;
            m_ClosestObject.transform.parent = null;
            m_ClosestObject = null;

            m_AnimationController.Animate("Throw");
            m_AnimationController.Animate("IsHoldingItem", false);
        }
    }