コード例 #1
0
    void Start()
    {
        sphere     = GameObject.Find("UpdateBoard");
        taptrigger = sphere.GetComponent <TapTrigger>();

        rosSocket    = GetComponent <RosConnector>().RosSocket;
        advertise_id = rosSocket.Advertise("/chatter", "std_msgs/String");
        moji         = "true";
        message      = new StandardString();
    }
コード例 #2
0
ファイル: StrPub.cs プロジェクト: tnomura2467/ORholo2
    void Start()
    {
        WorldEditorID = GameObject.Find("WorldEditor");
        iddecision    = WorldEditorID.GetComponent <IDdecision>();
        holoid        = iddecision.ids;

        sphere     = GameObject.Find("PressableButtonHoloLens2");
        taptrigger = sphere.GetComponent <TapTrigger>();

        rosSocket = GetComponent <RosConnector>().RosSocket;
        //トピック名はchatter,型はString
        advertise_id = rosSocket.Advertise("/chatter", "std_msgs/String");
        moji         = "trues";
        message      = new StandardString();
    }
コード例 #3
0
    void Update()
    {
        // only check for pause stuff in levels
        if (isLevel)
        {
            // check whether player is currently pressing pause button
            if (OVRInput.Get(OVRInput.Button.Back))
            {
                // check to make sure pause button wasn't already being pressed (debouncing)
                if (!onPauseButton)
                {
                    // if game is already paused, resume game
                    if (isPaused)
                    {
                        resume();
                    }
                    // otherwise, pause game
                    else
                    {
                        pause();
                    }

                    onPauseButton = true;
                }
            }
            else
            {
                onPauseButton = false;
            }
        }

        // check if we're currently dispensing a tap
        if (tapDispensing)
        {
            // if tap is dispensing and player takes finger off trigger, stop dispensing
            if (!OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
            {
                tapTrigger.onUnclick();
                lineRenderer.enabled = true;
                tapDispensing        = false;
            }
            // otherwise, do nothing to let the tap keep dispensing
            else
            {
                return;
            }
        }

        Transform pointer = Pointer;

        if (pointer == null)
        {
            return;
        }

        // get ray pointing in direction of controller
        Ray laserPointer = new Ray(pointer.position, pointer.forward);

        // handles when object is currently being held
        if (objectPickedUp)
        {
            // drop object when user releases trigger
            if (!(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)))
            {
                dropObject();
                return;
            }

            // keep track of position for only last 10 frames
            if (recentPositions.Count >= 10)
            {
                recentPositions.Dequeue();
            }

            // if player's finger is on touchpad, adjust object depth accordingly
            if (OVRInput.Get(OVRInput.Touch.One))
            {
                // get current y position of finger on touchpad
                currTouch = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad).y;
                // if player's finger was already on touchpad, adjust object depth
                // based on the difference in y position of touch
                if (onTouchpad)
                {
                    objDistance += (currTouch - prevTouch) * depthMultiplier;
                }
                prevTouch  = currTouch;
                onTouchpad = true;
            }
            else
            {
                onTouchpad = false;
            }

            rb.MovePosition(laserPointer.origin + laserPointer.direction * objDistance);

            if (isCup)
            {
                rb.MoveRotation(Quaternion.Euler(-90, 90, 0));
            }
            else if (isBeerBottle)
            {
                rb.MoveRotation(Quaternion.identity);
            }
            else
            {
                rb.MoveRotation(pointer.rotation);
            }

            recentPositions.Enqueue(rb.position);

            return;
        }

        // render line to position of laser pointer
        if (lineRenderer != null)
        {
            lineRenderer.SetPosition(0, laserPointer.origin);
            lineRenderer.SetPosition(1, laserPointer.origin + laserPointer.direction * maxRayDistance);
        }

        isHovering = false;

        RaycastHit hit;

        if (Physics.Raycast(laserPointer, out hit, maxRayDistance, ~excludeLayers))
        {
            // render line onto hit object
            if (lineRenderer != null)
            {
                lineRenderer.SetPosition(1, hit.point);
            }

            // check if we hit a cup that we are able to pick up
            if (((hit.collider.tag == "isCupThreshold" && hit.collider.gameObject.GetComponent <CupManager>().canPickup()) ||
                 hit.collider.tag == "canPickUp") && !isPaused)
            {
                lineRenderer.material.color = Color.blue;

                // if we were holding down the trigger before hovering over object,
                // then we need to release the trigger before being able to pick it up
                if (!onPickupableObject)
                {
                    canPickupObject = !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger));
                }
                else if (!canPickupObject && !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)))
                {
                    canPickupObject = true;
                }

                // indicate that we are hovering over object that we can pick up
                onPickupableObject = true;

                // if we can pick up this object and the trigger is down, pick up the object
                if (canPickupObject && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
                {
                    pickupObject(hit.collider.gameObject);
                    objDistance = hit.distance;
                }
            }
            // check if we hit a menu item that dispenses objects
            else if (hit.collider.tag == "objectDispenser" && !isPaused)
            {
                lineRenderer.material.color = Color.green;
                isHovering = true;

                // if we were holding down the trigger before hovering over menu item,
                // then we need to release the trigger before being able to click it
                if (!onPickupableObject)
                {
                    canPickupObject = !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger));
                }
                else if (!canPickupObject && !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)))
                {
                    canPickupObject = true;
                }

                // indicate that we are hovering over object that we can pick up
                onPickupableObject = true;

                // if we can click this menu item and the trigger is down, click it
                if (canPickupObject && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
                {
                    GameObject     menuItem = hit.collider.gameObject;
                    OnSelectScript oss      = menuItem.GetComponent <OnSelectScript>();
                    pickupObject(oss.OnSelect());

                    // set "unhover" on menu item since we clicked
                    ohs.OnUnhover();
                }
            }
            // check if we hit one of the drop-down menu items
            else if (hit.collider.tag == "hoverable" && !isPaused)
            {
                // tell menu item to perform drop-down
                isHovering = true;
                GameObject menuItem = hit.collider.gameObject;
                ohs = menuItem.GetComponent <OnHoverScript>();
                ohs.OnHover();
            }
            // check if we hit a button
            else if (hit.collider.tag == "physicalButton" || hit.collider.tag == "ResumeCube")
            {
                lineRenderer.material.color = Color.green;

                // if we were holding down the trigger before hovering over button,
                // then we need to release the trigger before being able to click it
                if (!onPickupableObject)
                {
                    canPickupObject = !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger));
                }
                else if (!canPickupObject && !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)))
                {
                    canPickupObject = true;
                }

                // indicate that we are hovering over button
                onPickupableObject = true;

                PhysicalButton btn = hit.collider.gameObject.GetComponent <PhysicalButton>();

                // if we can click this button and the trigger is down, click it
                // otherwise, call onHover()
                if (canPickupObject && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
                {
                    btn.onClick();

                    // special case: button is resume button; we should also call resume() after clicking
                    if (hit.collider.tag == "ResumeCube" && isPaused)
                    {
                        resume();
                    }
                }
                else
                {
                    btn.onHover();
                }
            }
            else if (hit.collider.tag == "jukeboxButton" || hit.collider.tag == "jukebox")
            {
                lineRenderer.material.color = Color.green;

                if (hit.collider.tag == "jukebox" && jukebox == null)
                {
                    jukebox = hit.collider.gameObject;
                }

                jukebox.GetComponent <ToggleUi>().onHover();

                if (hit.collider.tag == "jukeboxButton")
                {
                    // if we were holding down the trigger before hovering over button,
                    // then we need to release the trigger before being able to click it
                    if (!onPickupableObject)
                    {
                        canPickupObject = !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger));
                    }
                    else if (!canPickupObject && !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)))
                    {
                        canPickupObject = true;
                    }

                    // indicate that we are hovering over button
                    onPickupableObject = true;

                    JukeboxButton btn = hit.collider.gameObject.GetComponent <JukeboxButton>();

                    // if we can click this button and the trigger is down, click it
                    // otherwise, call onHover()
                    if (canPickupObject && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
                    {
                        btn.onClick();

                        // special case: button is resume button; we should also call resume() after clicking
                        if (hit.collider.tag == "ResumeCube" && isPaused)
                        {
                            resume();
                        }
                    }
                    else
                    {
                        btn.onHover();
                    }
                }
            }
            else if (hit.collider.tag == "door" && !isPaused)
            {
                lineRenderer.material.color = Color.green;

                // if we were holding down the trigger before hovering over quit button,
                // then we need to release the trigger before being able to click it
                if (!onPickupableObject)
                {
                    canPickupObject = !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger));
                }
                else if (!canPickupObject && !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)))
                {
                    canPickupObject = true;
                }

                // indicate that we are hovering over object that we can click
                onPickupableObject = true;

                FridgeDoorManager m = hit.collider.gameObject.GetComponent <FridgeDoorManager>();
                // if we can click this button and the trigger is down, click it
                if (canPickupObject && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
                {
                    GameObject retval = m.onClick();
                    if (retval != null)
                    {
                        pickupObject(retval);
                        isBeerBottle = true;
                    }
                    canPickupObject = false;
                }
                // otherwise, call on hover
                else
                {
                    m.onHover();
                }
            }
            else if (hit.collider.tag == "tap" && !isPaused)
            {
                lineRenderer.material.color = Color.green;

                // if we were holding down the trigger before hovering over quit button,
                // then we need to release the trigger before being able to click it
                if (!onPickupableObject)
                {
                    canPickupObject = !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger));
                }
                else if (!canPickupObject && !(OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)))
                {
                    canPickupObject = true;
                }

                // indicate that we are hovering over object that we can click
                onPickupableObject = true;

                tapTrigger = hit.collider.gameObject.GetComponent <TapTrigger>();
                // if we can click this button and the trigger is down, click it
                if (canPickupObject && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
                {
                    tapTrigger.onClick();
                    canPickupObject      = false;
                    tapDispensing        = true;
                    lineRenderer.enabled = false;
                }
                // otherwise, call on hover
                else
                {
                    tapTrigger.onHover();
                }
            }
            // otherwise, reset pointer color and indicate that we can't
            // currently pick up an object
            else
            {
                lineRenderer.material.color = Color.red;
                onPickupableObject          = false;
            }
        }

        if (wasHovering && !isHovering)
        {
            ohs.OnUnhover();
        }

        wasHovering = isHovering;
    }