示例#1
0
    public Vector3 GrabbedUpdate(Vector3 targetPos, GameObject go)
    {
        VRhand_handle handle = gameObject.GetComponent <VRhand_handle>();

        if (handle != null && grabbedHandle)
        {
            go2.transform.position = go.transform.position;
            go2.transform.rotation = go.transform.rotation;
        }
        else
        {
            transform.position = go.transform.position;
            transform.rotation = go.transform.rotation;
        }
        return(Vector3.zero);
    }
示例#2
0
    public void Kinematize(Transform handTransform, bool isRightHand, Vector3 targetPos, GameObject go)
    {
        if (originalParent == null)           // We havent grabbed it yet
        // Make it kinematic as we are holding it now
        {
            rigidbody.isKinematic = true;

            // Put it in the MyHands layer (== layer 11) such that it does not collide with my body
            originalLayer    = gameObject.layer;
            gameObject.layer = handLayer;
            // However, we need to make everything connected (children, hinges) also to layer 11...

            // Store the origGLnal parent in order to restore it when letting loose
            originalParent = transform.parent;

            Vector3 storePos = transform.position;
            transform.position = handTransform.position;
            transform.position = storePos;

            // check for handle
            VRhand_handle handle = gameObject.GetComponent <VRhand_handle>();
            if (handle != null)
            {
                Vector3 handlePos = transform.TransformPoint(handle.position);
                float   d         = Vector3.Distance(targetPos, handlePos);
                if (d < handle.range)
                {
                    grabbedHandle           = true;
                    go2                     = new GameObject();
                    transform.parent        = go2.transform;
                    transform.localRotation = Quaternion.Inverse(Quaternion.Euler(handle.rotation));
                    transform.localPosition = transform.localRotation * -handle.position;
                }
                else
                {
                    grabbedHandle = false;
                }
            }
            if (handle == null | grabbedHandle == false)
            {
                go.transform.position = transform.position;
                go.transform.rotation = transform.rotation;
            }
        }
    }