コード例 #1
0
    private void GripDown(OVRInput.Controller c)
    {
        if (c == m_OVRController)
        {
            // Storing a possible reference
            Transform closest = null;

            // switch based on grab type
            switch (m_grabType)
            {
            case (grabType.Grip):
                // If grip, we grab from our grip detector
                closest = m_gripDetector.closestInRange;
                break;

            case (grabType.Distance):
                // We cannot use the teleport ponter for grabbing -_-
                closest = (m_pointer.GetPointerType() != "Teleport" && m_pointer.raycastTarget != null && m_pointer.raycastTarget.GetComponent <CustomGrabbable>()) ? m_pointer.raycastTarget.transform : null;
                break;

            case (grabType.Both):
                // If grip, we grab from our grip detector
                closest = m_gripDetector.closestInRange;
                // closest is updated based on if it's already not null or not - if it is still null, we check the pointer
                closest = (closest != null) ? closest : (m_pointer.GetPointerType() != "Teleport" && m_pointer.raycastTarget != null && m_pointer.raycastTarget.GetComponent <CustomGrabbable>()) ? m_pointer.raycastTarget.transform : null;
                break;
            }
            // If closest is not == null, we grab it!
            if (closest != null && m_grabbedObject == null)
            {
                GrabBegin(closest.GetComponent <CustomGrabbable>());
            }
        }
    }