how to know if an actor it's inside a volume.

Im talking about a volume, i can extend it, it works but i wanna know if an actor it’s inside of it any idea ?

I haven’t tested it, but wouldn’t this work:



ForEach TouchingActors(class'Actor', A)


We used this to find out if your in a volume at the start. We used this in RestartPlayer function.



local PBIndoorWeatherVolume IWV;
local bool InWeatherVolume;
local Actor WeatherStartingSpot;
local NavigationPoint StartSpot;

StartSpot = LastStartSpot;
WeatherStartingSpot = StartSpot;

foreach AllActors(Class'PBIndoorWeatherVolume', IWV)
{
  InWeatherVolume = IWV.Encompasses(WeatherStartingSpot);

  if(InWeatherVolume)
    break;
}

if(!InWeatherVolume)  
 {   
  //if not in volume do what ever
 }   
 else
 {  
   //in volume do whatever
 }  
 

I know this is a super old thread, but I also just needed to do this too.

If you have lot of physical volumes, rather than checking through every one, you can do a simple small trace from your actor to check if it hits a physical volume:



trace(hitLoc, hitNorm, end, start, false,,, TRACEFLAG_PhysicsVolumes);


That is another option ! thanks

Hello @Neongho

Here comes the noob and stupid solution :cool::cool::cool::cool::cool: for kismet

I would just add a trigger volume in almost the same size and position of the volume which you want to detect that the player is inside, and just would use the kismet condition for this trigger volume “Touched” (if this trigger volume is touched by the player or any pawn, that means this actor is inside the forementioned volume).

Cheers!

I don’t trust so much triggers I have bad experiences with em but thanks!

Best is an actor with a cylinder collision component instead of a trigger and use the touch function.

Thanks for this, nice to see that.

If I remember right, touch only happens when you break the plain of the trigger( the wall of it ). If I remember right when you spawn in it, it does not recognize that.