The problem:
I have a base class that contains a ProjectileMovement component, as well as a bunch of other functions and properties etc. Because of the way Unreal handles collision, the root component of this base class would have to be a collider (not ideal because children may require different collision shapes) or the ProjectileMovement component will need to have its target component explicitly set in each child blueprint (not ideal because the whole point of inheritance is to not repeat yourself).
The way Unreal handles collision means I am left finding another way to make inheritance and collision play nicely together.
An approach that can be used in other engines is to simply find the first component in the hierarchy that implements an interface or base class. But it seems Unreal doesn’t use a base class for colliders, or at least doesn’t expose this to blueprints. Is there a function I’m not aware of that can accomplish this?
Or am I on the wrong track altogether? I feel like inheritance and collision shouldn’t be at odds with each other, and aren’t in Unity and Godot (though I haven’t used Godot in ages and it may have changed), so maybe Unreal development uses a different paradigm or pattern? Surely there is something I missed because I find it hard to believe that AAA games can be made without basic things like this.