// Update is called once per frame void Update() { if (grabbedObject == null) { if (availableObjects.Count > 0) { FindClosestObject(); //Debug.Log("Closest Object to Hand " + this.name + ": " + closestObject.GetGameObject().name); } else if (closestObject != null) { if (lastClosestObject != null && !lastClosestObject.GetGrabbed()) { lastClosestHighlighter.TurnHighlightOff(); lastClosestObject = null; } if (!closestObject.GetGrabbed()) { closestHighlighter.TurnHighlightOff(); } closestObject = null; } } if (padClicked) { MoveCharacter(); } }
private void FindClosestObject() { lastClosestObject = closestObject; float closestDistance = float.MaxValue; foreach (ObjectMover moveable in availableObjects) { float currentDistance = Vector3.Magnitude(this.transform.position - moveable.GetTransform().position); if (currentDistance < closestDistance) { closestDistance = currentDistance; closestObject = moveable; } } if (lastClosestObject != null && lastClosestObject != closestObject && !lastClosestObject.GetGrabbed()) { lastClosestHighlighter.TurnHighlightOff(); } if (!closestHighlighter.GetHighlightOn() || (!closestObject.GetGrabbed() && closestHighlighter.GetHighlightColor() != selectColor)) { closestHighlighter.TurnHighlightOn(selectColor); } }
private bool DetectDeactivate() { bool deactivate = false; if (!attachedObjectTrigger) { deactivate = true; //Debug.Log("No trigger!"); } if (attachedObject == null) { deactivate = true; //Debug.Log("No attached object!"); } if (!attachedObjectMover) { deactivate = true; //Debug.Log("No mover!"); } if (!attachedObjectGrabbedBy) { deactivate = true; //Debug.Log("No grabbed by!"); } if (!attachedObjectMover.GetGrabbed()) { deactivate = true; //Debug.Log("Not grabbed!"); } if (Vector3.Magnitude(attachedObjectMover.transform.position - this.transform.position) > deactivationDistance) { deactivate = true; //Debug.Log("beyond distance!"); } deactivate = false; return(deactivate); }
public void Grab(ObjectMover objectToGrab) { if (objectToGrab) { if (objectToGrab.GetGrabbed() && !objectToGrab.GetTwoHanded()) { objectToGrab.GetGrabbedBy().Release(); } objectToGrab.Grab(this); grabbedObject = objectToGrab; grabbedHighlighter.TurnHighlightOn(grabColor); //Debug.Log("Grabbing with controller: " + grabbedObject.name); } else { return; } }