You have that one wrong.
FastTrace(A, B) is a trace performed from B to A (so B->A).
So what you have there is a trace done from
72 units in the direction of Self actor is facing (the actor you're calling this in, not the Winner);
Then drops 33unit * 44 in the Z direction, which is actually a drop of 1452 (=33*44).
What you probably want is:
- Code: Select all
if ( !FastTrace(Best.Location + 72 * Vector(Winner.ViewRotation) + vect(0,0,-33), Winner.Location )
This doesn't cover the radial check of 44 units, because you simply cannot do that in a fast trace.
At max, you could do it with VisibleCollidingActors afterwards, but that doesn't give you awareness if there's something that could block it.
Instead, you can try to spawn an actor with a collision of 44 radius (a "collidable" and "blockable" collision) with the property bCollideWhenPlacing=True in that actor.
If it spawns, the area is clear enough, if it fails to spawn, a 44 radius actor doesn't fit there.
EDIT: You can use the platform spawn as that radial spawn check itself, if it succeeds, you can spawn the rest and no extra resources needed.