Hover event with VIVE Controller

No worries we’re all learning here! :slight_smile:

I have posted some screen shots to help aid you. You want to go to your blue print containing the laser pointer, click on the laser pointer from the components panel on the left, then while it’s highlighted go over to the right details panel and scroll down until you see the events, from there find one titled On component Overlap, click the green plus.

Then connect the nodes as seen in the picture below, on overlap node has pins returning the object that your laser pointer is overlapping with. Note that you will need to perform some sort of check to make sure you are setting the visibility to the correct object, I have mine set up to change the visibility of the root component of ANY actor you overlap with. Final note, you must check the box of the boolean to set the objects’ visibility to visible.

Hi all, I am quite new to Unreal. I made a scene for VR using the standard template.
I use the Vive controllers and navigation/teleporting works well.

Some questions: I need a textrender to appear when hovering with the laserpointer of the controller over an actor.
I have tried everything, but can;t get it working…
I searched all the forums on internet, but no luck for me.

How can I best made this event? I don’t know which event I have to use. Also tried with actoroverlap, but didn’t know which actor I have to use (Grabsphere in the controller BP?)

Other question: when playing in VR I can select all actors and get then a gizmo. Can that be disabled?

Thanks in advance!

Thanks for the quick reply!! I posted some comments, but they are gone…

I tried to make the event you told me about, but I am stucked:
See screenshot. I made a BP of the button-01 and placed a textrender in the scene.

What I want is this textrender to appear on hover, but I am too newbee to make this work…

Second question of me was: when playing in VR I can select all actors in the scene and get a translate Gizmo (x,y,z) Can that be disabled? So just navigating/teleporting and hovering over certain buttons is all I need.

The other thing you should be sure to check is that both the laserpointer and thing you want to point at have GenerateOverlap events enables and that they both have collision presences that will overlap with each other, such as “Overlap all dynamic”. Alternatively try “OnComponentBeginOverlap” as your laser pointer is likely a component of the hand controller actor. This may work well enough for you, however I believe it may be easier in the long run to use a custom trace channel.

Using a “LineTraceByChannel”, then spawn you’re text component if you get a trace hit and at the location of the hit. You want the trace to start at the controller and end where the laserpointer ends. For easier access you can set up a custom trace channel in Project Settings → Collision. Create a new custom trace channel and set the default response to ignore, then on the actors you want the trace to hit set their trace preference to block your custom channel under their collision settings. This will make your laser pointer much more selective, to pick up only the actors you want it to.

https://docs.unrealengine.com/en-US/InteractiveExperiences/Tracing/HowTo/SingleLineTraceByChannel/index.html

I’m not sure what you’re asking in your second question, can you rephrase or provide screen shot context?

It sounds like you’re not actually playing a VR demo of your game but rather using UE4’s VR editor mode which allows you edit your level in VR. Are you using the VR Preview option to start your game? I don’t have my HMD connected so my option is greyed out.

332969-vr-preview.png

You won’t be able to drag it in, what you need to do is drag off the “Other actor pin” from the overlap node and Cast it to your textrender actor then use a “get node” from this actor to get a refence to the component you want to change the visibility of. You could use the “other component pin” the component you are overlapping with is in fact the one you want to set visible, however because it is invisible it will be hard for the player to find it to overlap with in the first place.

If you can screen shot, you’re blue print for the Textrender Actor, I can help you set up a custom event that will make this a lot easier to do.

Thank you for the explanation!! I will give it a try.
You set now the Root component as target, can I set a textrender actor in my scene as target? I tried, but I can’t drag and drop an actor in the BP.

I have made a start with the BP. Not knowing how to connect the textrender to the target of the toggle visibility. This is the BP of the button-01 (Cylinder)

I also can’t find the laserpointer in my level? So I chose the arc spline (I guess this is the laserbeam of the controller (or am I wrong?)

Attached the screenshots of my level and the BP so far…

I wa also wondering: in the level BP you can set a reference to an actor, why can’t that be also done in the BP of the button I use?

These are the components of the controller. The pointer is a cylinder I earlier set in the hand controller to try to set an actor overlap, but I don’t see this pointer in VR (when I see the Vive controller)

333063-motioncontroller.jpg

You were indeed right, I played my scene in VR in VR mode button on the toolbar.

I had earlier tried VR preview → play, but the I don’t see my Vive controller…

Any idea how to fix that. I searched long on the internet, but didn’t find a proper solution.

You should see the “Hand Mesh” in place of your controllers, however if they are not tracking it all then the “HandMesh” will appear attached to the root component of the VR character at the feet. First check with in the VR character blue print or the motion controller blue print for something along the Set motion source node. If the controllers are not tracking then you will have an issue seeing them in game. Docs here: https://docs.unrealengine.com/en-US/BlueprintAPI/MotionController/MagicLeap/SetMotionSourceforHand/index.html

Another way to check would to play a preview of the game in any mode, and use F8 to eject from the pawn and try to find them in the world browser, once you have located them at run time you see if they are even spawning at all, are invisible, or spawning in a weird place.

I believe this is because the spline arc is not in the level on begin play, rather it is spawned by the player on an action. I could be wrong on this one, I don’t remember exactly how they have the template set up. Do keep in mind that the default arc on the BP character is not a straight line, it is used to make the teleportation target arc that hits the floor, hence the laser pointer being a cylinder (it’s the targeting system mesh). So to get the effect you want of a straight laser pointer you are going to have to construct you’re own blue print, in which case I highly recommend using a trace and placing a spline mesh over the same distance as the trace.

Thanks a lot with the help so far!!

I now see the hand mesh. I had to update the controllers firmware!
I replaced it for the Vive controller mesh and can teleport.

I have made a new post in VR answers to ask for movement with grab and move with the controller.

That’s great news, I’ll try to check out that post later if someone hasn’t already gotten to it. I’m sure you’ll get it all up and running in no time. Please don’t forget to mark this post as resolved and accept the answer when you get it up and running. :slight_smile: