Exemplo n.º 1
0
    void TryGrab()
    {
        if (grippedObj != null)
        {
            if (Input.GetButtonDown(buttonName))
            {
                grippedObj.transform.parent = transform;
                grippedObj.GetComponent <Rigidbody>().isKinematic = true;
                currentGrabbedLocation = grippedObj.transform.position;

                try
                {
                    GrabPoint gp = grippedObj.GetComponentInChildren <GrabPoint>();

                    grippedObj.transform.localPosition = (handMode == 0) ? gp.grabPositionLeft : gp.grabPositionRight;
                    grippedObj.transform.localRotation = Quaternion.Euler((handMode == 0) ? gp.grabRotationLeft : gp.grabRotationRight);

                    gp.grabbed = true;
                } catch (Exception e)
                {
                    // Item grabbed does not have a specific grab position
                }

                gripped = true;
            }
        }
    }
Exemplo n.º 2
0
 void Release()
 {
     currentlyGrabbing.Release();
     cameraRig.Release();
     currentlyGrabbing = null;
     _isHolding        = false;
 }
Exemplo n.º 3
0
 public void OnTriggerEnter(Collider collider)
 {
     if (collider.gameObject.tag == "Grabbable")
     {
         GrabPoint grabPoint = collider.GetComponent <GrabPoint>();
         if (grabPoint != null)
         {
             hoveredHandle = grabPoint;
         }
     }
 }
Exemplo n.º 4
0
    void Grab_OFF()
    {
        //TODO Get a grab buffer working
        float grabBuffer = 2f;


        Transform  grabPoint = FindObjectOfType <Grab>().transform;
        Quaternion origRot;

        try {
            Transform child = grabPoint.GetChild(0);
            try {
                attack               = child.GetComponent <SwanAttack>();
                move                 = child.GetComponent <SwanMove>();
                swanCollider         = child.GetComponent <BoxCollider>();
                rb                   = child.GetComponent <Rigidbody>();
                attack.enabled       = false;
                move.enabled         = false;
                swanCollider.enabled = false;
                rb.velocity          = Vector3.zero;
            }
            catch (System.Exception) {
                //todo  This wont work with any type that doesnt have the swan scripts on it
                //Consider changing for more enemy types
                Debug.LogWarning("ATTACK: " + attack + " : OR MOVE " + move + " : IS NULL!! ARE YOU SURE YOU GRABBED A SWAN?");
                throw;
            }

            origRot = child.rotation;

            grabPoint.DetachChildren();
            GameEvents.OnEffectMode_OFF();

            child.rotation = Quaternion.identity;

            if (grabPoint.parent.forward.x > child.position.x)
            {
                grabBuffer *= -1;
            }
            child.rotation           = origRot;
            child.transform.position = new Vector3(child.transform.position.x /*+ grabBuffer*/, 0.77f, 0);
            StartCoroutine(ResetAttackAndMove());
        }
        catch (System.Exception) {
        }


        GrabPoint.SetActive(false);
    }
Exemplo n.º 5
0
    private void OnTriggerExit(Collider other)
    {
        Debug.Log("Exit: " + other.gameObject.name);
        VRObject vrObj = other.gameObject.GetComponent <VRObject>();

        if (!vrObj)
        {
            vrObj = other.gameObject.GetComponentInParent <VRObject>();
        }
        if (vrObj)
        {
            VRObjectCollidingList.Remove(vrObj);
        }

        GrabPoint grabPoint = other.gameObject.GetComponent <GrabPoint>();

        if (grabPoint)
        {
            GrabPointCollidingList.Remove(grabPoint);
        }
    }
 void OnTriggerEnter(Collider collision)
 {
     if (!collision.gameObject.tag.Equals("NonGrabable") && isGrabbing == false)
     {
         canGrab    = true;
         heldObj    = collision.gameObject;
         gp         = heldObj.GetComponent <GrabPoint>();
         flashlight = heldObj.GetComponent <Flashlight>();
         gun        = heldObj.GetComponent <Gun>();
         if (gp != null)
         {
             Debug.Log("Found Grab Point script");
         }
         if (flashlight != null)
         {
             Debug.Log("Found Flashlight script");
         }
         if (gun != null)
         {
             Debug.Log("Found Gun script");
         }
     }
 }
Exemplo n.º 7
0
 void UpdateGrab(GrabPoint target)
 {
     target.UpdateGrab(Vector3.Distance(transform.position, playerJoint.position));
 }
Exemplo n.º 8
0
 void Grab(GrabPoint target)
 {
     target.Grab(Vector3.Distance(transform.position, playerJoint.position));
     currentlyGrabbing = target;
     _isHolding        = true;
 }
Exemplo n.º 9
0
    private void Grip()
    {
        if (grabJoint == null)
        {
            //We try to grab GrabPoints before trying to grab VRObjects themselves.
            VRObject  objectToGrip     = null;
            GrabPoint grabbedGrabPoint = null;

            int highestPriority = int.MinValue;
            foreach (GrabPoint grabPoint in GrabPointCollidingList)
            {
                VRObject grabPointParent = grabPoint.GetParentVRObject();
                if (grabPointParent.priority + 1 > highestPriority)
                {
                    objectToGrip     = grabPointParent;
                    highestPriority  = grabPointParent.priority + 1;
                    grabbedGrabPoint = grabPoint;
                }
            }

            foreach (VRObject vrObj in VRObjectCollidingList)
            {
                if (vrObj.priority > highestPriority)
                {
                    objectToGrip     = vrObj;
                    highestPriority  = vrObj.priority;
                    grabbedGrabPoint = null;
                }
            }

            if (objectToGrip)
            {
                Debug.Log("gripped", this);

                if (grabbedGrabPoint)
                {
                    grabAttachPoint.transform.rotation = objectToGrip.transform.rotation;
                    Vector3 grabPointRotationOffset = grabbedGrabPoint.transform.eulerAngles - grabAttachPoint.transform.eulerAngles;
                    grabAttachPoint.transform.eulerAngles += grabPointRotationOffset + grabbedGrabPoint.rotationOffset;

                    grabAttachPoint.transform.position = objectToGrip.transform.position;
                    Vector3 grabPointPositionOffset = grabbedGrabPoint.transform.position - grabAttachPoint.transform.position;
                    grabAttachPoint.transform.position += grabPointPositionOffset + grabbedGrabPoint.postitionOffset;
                    Physics.IgnoreCollision(grabAttachPoint.GetComponent <Collider>(), objectToGrip.GetComponent <Collider>());
                }

                grabJoint = grabAttachPoint.gameObject.AddComponent <FixedJoint>();
                grabJoint.enablePreprocessing = false;


                if (objectToGrip.grabList.Count > 0)
                {
                    RemoveAngularDrive();
                }

                grabJoint.enableCollision = false;
                grabJoint.connectedBody   = objectToGrip.GetComponent <Rigidbody>();


                objectToGrip.Gripped(this);
                grippedObject = objectToGrip;
            }
        }
    }
Exemplo n.º 10
0
 void Grab_ON()
 {
     GrabPoint.SetActive(true);
 }