Hi, I am running into a trivial issue which I just cannot seem to solve. Its been around a year since I have developed in Unreal so possibly I am doing something silly.
I am developing a VR Project for Oculus Go, which will be something like a planetarium. I have a VR Pawn which does a line trace and places a static mesh sphere (used for collisions) at the hit point of that line. < Works perfectly.
I have a second Blueprint which is a planet. It has a static mesh sphere and detects hits with the VR Pawn’s collision sphere on the ActorBeginOverlap event. Looks like this:
I am printing the results of the bool HitPlanet, but it never returns true, even though I can clearly see my collision sphere and planet sphere overlapping:
get all actors of class will get number “0” mesh in the world I think.
so put two nodes called “print string” in the end of the branch on true and false each, the one the true make it print “True” and vice versa for the false executable print string, and then test.
if my expectations are true, you will hit 1 planet and it will print True.
No luck unfortunately. It doesn’t fire on any planets. The get all actors of class is getting the collision sphere from the VR Pawn (there only is one). The get is fine. I’ve tested by printing the position of the collision sphere in the planets blueprint and that works.
My only guess is there is something about the way I have set up collisions that never fires, I just can’t figure it out. The collisionSphere in VR Pawn and the planet mesh in planet both have collisions, generate overlap events is set, and ive tried the collision presets on block all, default, block dynamic etc but that doesn’t seem to make a difference. Is there any way to view collisions in game?
First, you have an actor equaling an actor component. I would imagine this would always be false. Just drag off the overlapped actor pin directly to a cast to node, and cast it to the VRPawn. For issues with collision settings if that doesn’t work perhaps this video will help with any basic issue that may be causing a problem.
Hmm not sure why it is not working but I usually do it another way… when the overlap happens you can check if the actor colliding is a VRPawn with a “cast to VRPawn” node (I used a my_character node as example), if it is other actor, then the cast will fail and the function will not continue but if it succeeds then anything you put in the exec pill will happen
You need to have both actors generate overlap events enabled, and depending on the actor collision, have that overlap on the other actors trigger collisions setup, ie. Actor_a is Pawn and overlaps collision channel Trigger, Actor_b has a collision sphere assigned to the Trigger channel, and overlaps Pawn collision channel.
Also you need to check that there is not another actor or “system” volume for instance which may interfer with both actors collisions, ie. a make another collision channel call it System, set it to ignore, then have all the ie. procedural volumes, or navmesh volumes set to System collision channel. Also if you have overlapping collisions you need to check that they do not block visibility, for line traces and such, and the main character should have the triggering collision setup to CCD continous collision detection, and there are some more such options at the drop down panel for collision settings.
Also be careful when deleting existing custom collision channels, they may mess up your other actor collision setups. When you edit a base actor bp, it automatically edits all other child collision settings.