Ejemplo n.º 1
0
    // 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();
        }
    }
Ejemplo n.º 2
0
    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);
        }
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
    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;
        }
    }