void OnTriggerStay(Collider collider) { //If object is an interactable item VRInteractableObject interactable = collider.GetComponent <VRInteractableObject>(); if (interactable != null) { //If trigger button is down if (device.GetHairTriggerDown() && currentHeld == null) { //Pick up object interactable.Grab(this.gameObject); currentHeld = collider.gameObject; GetComponent <BoxCollider>().size = holdingTriggerSize; } if (device.GetHairTriggerUp()) { //Pick up object interactable.Release(this.gameObject); if (currentHeld != interactable && currentHeld != null) { GetComponent <BoxCollider>().size = regularTriggerSize; currentHeld.GetComponent <VRInteractableObject>().Release(this.gameObject); currentHeld = null; } } } }
private void OnTriggerStay(Collider collider) { VRInteractableObject interactableObject = collider.GetComponent <VRInteractableObject>(); //Falls das Kollidierte Objekt bereits von dem anderen Controller gehalten wird und dieser Controller den Trigger betaetigt hat, soll das Objekt Skaliert werden if (interactableObject != null && interactableObject.transform.parent.name != null && interactableObject.transform.parent.name == otherController.name && Device.GetPress(SteamVR_Controller.ButtonMask.Trigger)) { scaleSelected(interactableObject.gameObject); } else if (interactableObject != null && Device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)) { double distanceInteractableObj = Vector3.Distance(interactableObject.transform.position, transform.position); //if trigger button is down if (distanceInteractableObj < grabDistance && heldObjects.Count < 1) { //Pick up object heldObjects.Add(interactableObject.Pickup(this)); } } }
protected void RayEnter(RaycastHit hit) { //Asign to class variable so it can be used in RayStay hitObjectObjectInteractable = hitObject.GetComponent <VRInteractableObject>(); if (hitObjectObjectInteractable) { //If hit object is an Interactable, trigger RayEnter Method hitObjectObjectInteractable.RayEnter(hit, controllerInput ?? null); } }
void OnTriggerEnter(Collider collider) { Debug.Log("Trigger Entered"); VRInteractableObject collidedItem = collider.GetComponent <VRInteractableObject>(); if (collidedItem) { objectsHoveringOver.Add(collidedItem); } }
void OnCollisionEnter(Collision col) { //If object is an interactable item VRInteractableObject interactableObject = col.gameObject.GetComponent <VRInteractableObject>(); if (interactableObject != null && interactableObject.tag == "SimulationObject") { Destroy(col.gameObject); } }
protected void RayExit() { if (hitObjectObjectInteractable) { //If hit object is an Interactable, trigger RayExit Method hitObjectObjectInteractable.RayExit(controllerInput ?? null); //Clear class variables hitObjectObjectInteractable = null; hitObject = null; } }
void OnTriggerExit(Collider collider) { if (collider.attachedRigidbody != null) { //If object is an interactable item VRInteractableObject[] interactables = collider.attachedRigidbody.GetComponents <VRInteractableObject>(); for (int i = 0; i < interactables.Length; i++) { VRInteractableObject interactable = interactables[i]; interactable.TriggerExit(this); } } }
void OnTriggerExit(Collider collider) { Debug.Log("Trigger Exited"); VRInteractableObject collidedItem = collider.GetComponent <VRInteractableObject>(); if (collidedItem) { objectsHoveringOver.Remove(collidedItem); } if (objectsHoveringOver.Count == 0) { closestItem = null; } }
// Update is called once per frame void Update() { if (controller == null) { Debug.Log("Controller not initialized!"); return; } if (controller.GetPressDown(triggerButton)) { float minDistance = float.MaxValue; float distance; foreach (VRInteractableObject item in objectsHoveringOver) { distance = (item.transform.position - transform.position).sqrMagnitude; if (distance < minDistance) { minDistance = distance; closestItem = item; } } interactingItem = closestItem; if (interactingItem) { if (interactingItem.CurrentlyInteracting) { interactingItem.EndInteraction(this); } interactingItem.BeginInteraction(this); } } if (controller.GetPressUp(triggerButton) && interactingItem != null) { interactingItem.EndInteraction(this); interactingItem = null; } }
void OnTriggerStay(Collider collider) { //If collider has a rigid body to report to if (collider.attachedRigidbody != null) { //If rigidbody's object has interactable item scripts, iterate through them VRInteractableObject[] interactables = collider.attachedRigidbody.GetComponents <VRInteractableObject>(); for (int i = 0; i < interactables.Length; i++) { VRInteractableObject interactable = interactables[i]; for (int b = 0; b < buttonsTracked.Count; b++) { //If a tracked button is pressed EVRButtonId button = buttonsTracked[b]; if (device.GetPressDown(button)) { //If we haven't already sent the button press message to this interactable //Safeguard against objects that have multiple colliders for one interactable script if (!pressDownObjects.ContainsKey(button) || !pressDownObjects[button].Contains(interactable)) { //Send button press through to interactable script interactable.ButtonPressDown(button, this); //Add interactable script to a dictionary flagging it to recieve notice //when that same button is released if (!pressDownObjects.ContainsKey(button)) { pressDownObjects.Add(button, new List <VRInteractableObject>()); } pressDownObjects[button].Add(interactable); } } } } } }
private VRInteractableObject clonePickup(VRControllerInput controller) { GameObject newObject = Instantiate(this.gameObject, this.transform.position, this.transform.rotation); VRInteractableObject newInteractableObject = newObject.GetComponent(typeof(VRInteractableObject)) as VRInteractableObject; newInteractableObject.transform.localScale = gameObject.transform.lossyScale; if (this.name != "HumanScale") { newObject.gameObject.name = this.name + "_" + index++; } else { newObject.gameObject.name = this.name; } newInteractableObject.GetComponent <Rigidbody>().isKinematic = true; newInteractableObject.GetComponent <Rigidbody>().useGravity = true; newInteractableObject.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.None; newInteractableObject.originalParent = originalParent; newInteractableObject.originalKinematicState = originalKinematicState; newInteractableObject.originalConstraintsState = originalConstraintsState; newInteractableObject.transform.SetParent(controller.gameObject.transform); newInteractableObject.clonedObject = true; return(newInteractableObject); }