void GetClosestObject()
    {
        if (_grabables.Count == 0)
        {
            if (_nearestObject != null)
            {
                _nearestObject.GetComponent <Outline>().color = 0;
                _nearestObject = null;
            }
            return;
        }

        _nearestObject = _grabables[0];

        for (int i = 0; i < _grabables.Count; i++)
        {
            float closestDistance = Vector3.Distance(transform.position, _nearestObject.transform.position);
            float thisDistance    = Vector3.Distance(transform.position, _grabables[i].transform.position);

            if (thisDistance < closestDistance)
            {
                _nearestObject.GetComponent <Outline>().color = 0;
                _nearestObject = _grabables[i];
            }
        }

        _nearestObject.GetComponent <Outline>().color = 2;
    }
    void Grab()
    {
        _isGrabbing = true;

        if (_grabables.Count == 0)
        {
            StartAnimateOpen(1);
            return;
        }

        _grabbedObject = _nearestObject;
        _nearestObject.GetComponent <Outline>().color = 0;

        _grabbedObject.Grab();

        StartAnimateOpen(0.17f);         // eventually base this number on a value in GrabObject
    }
    private void Update()
    {
        if (_grabbedObject != null)
        {
            if (_grabbedObject.gameObject == null)
            {
                _grabbedObject = null;
                return;
            }

            _grabbedObject.transform.position = transform.position;

            if (!MyGrabObject.Grabbed)
            {
                _grabbedObject.Release(Vector3.zero);
                _grabbedObject = null;
                _grabbedObject.gameObject.layer = GrabObject.GRABBEDLAYER;
                _grabbedObject.GetComponent <Collider>().enabled = true;
            }
        }
    }
Beispiel #4
0
    void OnTriggerStay(Collider col)
    {
        GrabObject g = col.GetComponent <GrabObject>();

        if (g)
        {
            Debug.Log(g.name + " is inside");
            if (g.grab && (!GetComponent <FixedJoint>()))
            {
                Debug.Log("fixed joint added");
                grabbed = true;
                FixedJoint Joint = gameObject.AddComponent <FixedJoint>();
                Joint.connectedBody = g.GetComponent <Rigidbody>();
                Joint.breakForce    = 1000;
            }
            if (!g.grab && GetComponent <FixedJoint>())
            {
                grabbed = false;
                Debug.Log("fixed joint destroyd");
                Destroy(GetComponent <FixedJoint>());
            }
        }
    }