Exemplo n.º 1
0
    private void Interact()
    {
        didSomethingDurningFrame = true;
        Debug.Log("Interact");
        DragInteractable currentDraggedObject = draggedObject;

        ReleaseDraggedObject();
        RaycastHit interactionHit;
        Vector3    rayOrigin = physicalCollider.transform.position + new Vector3(0, 0.5f, 0);

        Physics.Raycast(rayOrigin, Vector3.right * (float)currentDirection, out interactionHit, interactionDistance, collisionMask);//TODO-send more than one ray
        Debug.DrawLine(rayOrigin, rayOrigin + (Vector3.right * (float)currentDirection * interactionDistance), Color.yellow, 0.5f);
        if (interactionHit.collider != null)
        {
            Debug.Log("interactionHit.collider != null");
            GameObject hitObject = interactionHit.collider.gameObject;
            if (hitObject.GetComponent <Interactable>())
            {
                hitObject.GetComponent <Interactable>().Interact();
            }
            if (hitObject.GetComponent <DragInteractable>())
            {
                Grab(hitObject.GetComponent <DragInteractable>(), currentDraggedObject);
            }
        }
    }
Exemplo n.º 2
0
 public void Grab(DragInteractable grabbed, DragInteractable previousDragged)
 {
     if (grabbed != previousDragged)
     {
         draggedObject = grabbed;
         draggedObject.MoveToDraggedState();
         //draggedObject.transform.parent = this.gameObject.transform;
         //Joint joint= draggedObject.gameObject.AddComponent<FixedJoint>();
         //joint.connectedBody = rigidbody;
         state = PlayerStates.Drag;
     }
 }
Exemplo n.º 3
0
 private void ReleaseDraggedObject()
 {
     if (draggedObject != null)
     {
         /* if (draggedObject.gameObject.GetComponent<FixedJoint>())
          * {
          *   Destroy(draggedObject.gameObject.GetComponent<FixedJoint>());
          * }*/
         //draggedObject.transform.parent = null;
         draggedObject.MoveToFreeState();
         draggedObject = null;
         state         = PlayerStates.None;
         graphics.transform.localPosition = new Vector3(0, 0, 0);
     }
 }