Detection collisions with something that has no collider?

I can’t seam to get this figured out. My AI is 100% navmesh driven and does not have a collider. This lets me have 300+ AI actors active with pretty solid performance. Down side is I cannot have colliders on them. So they’re turned off, but I need my projectiles to hit them. I’ve tried sphere cats, sphere traces, line traces, colliders on my projectiles, but for the love of all things NOTHING seams to detect the AI actors. What am I doing wrong here? There has got to be a way to detect X actor is in Y radius of Z without collider components.

Still can’t get this to work. I don’t understand why I can’t do simple fast traces without having to have collision components. Has anyone figured this out? I really don’t need collision checks to be ticking as often as they are so I want to replace them with simple traces. Even turning on collision queries and setting all channels to ignore still dings the FPS.

SphereOverlapActors SHOULD work. The tooltip and the documentation do not hint at this requiring a blocking hit.

you wont get any hit trace or something like that when your targets dont have anything to get that hit.

I don’t know if detecting by distance is good for you. If it is, then you just have to evaluate the distance between your projectiles and your enemies you can do something like this:

Distance check won’t work. There could be upwards of 300 enemies going on. There has to be way otherwise how the heck would data driven collisions even work if nothing has collision components.

why not? just checking distances cant be expensive.
data driven collisions needs colliders. you are trying to get collisions without colliders in play.

Get All Actors of Class is ungodly slow. Doing that regularly for multiple projectiles would be worse than doing collision components. Anyway, will just have to continue to use query collisions and try to optimize this further somehow. Be great if I could set the collision tick rate independently, but doesn’t seam I can. I don’t need it to even tick at all; my projectiles do that in their bullet manager.

you can put the enemies in an array of the enemy class in a common place like gamemode at the beginning or as they are spawned and you just ‘for each’ the array. no need to use get all of class.

I think I found a potential solution. My player and projectiles have collision components, but the AI don’t. I then use a timer to sphere trace from my AI and if it hits the projectile or the player I can notify them of the hit. This avoids the overhead of a collision component on the AI itself. Just wish I didn’t need collision components at all.

Also curious if a timer to flip collisions on and off would be enough to reduce their tick abuse as they slam FPS like crazy.

killing enemies by just distance (collisions disabled)

it’s blueprint…in C++ must be a lot more efficient.

If you deal with massive number of actors you should not destroy and respawn them all the time (bullets included) best approach is pre spawn in arrays and reuse.

Also, check performance outside the editor (compile it and test the exe file)

I’m not destroying actors. I’m using an object pool for them. I can’t read much in the screenshot as it’s so far zoomed out it just blurs on zoom in. At any rate I don’t appear to need this level of optimization as I’ve got it optimized at over 60fps with 200 actors and 100 projectiles which is the very high end of possible scenarios all with using collision components.