Alternative ways to call for custom events besides casting?

The player currently is only possessing a single type of pawn, a “Basic Ship”, however if the player, which is using a player controller, is going to be able to posses multiple types of pawns(not at the same time, like a car select type thing in a racing game), how would you check for the right custom event to execute when an input is pressed? Is there another way besides just casting to different pawns until you get a successful cast? Could you consistently name events like “forward thrust” and have it check for an event to execute called that instead?

I picture two ways you can think of building your pawns. Like you say, a ‘forward thrust’ action can share a common event so you don’t have to make it every time. For this I would create an axis event in your Inputs and call it something like MoveForward. Other features your pawns have in common might not work with controls, such as receiving a powerup or dying. Here you could create an Interface with common things that happen to each pawn but behave differently for some.

Input Axis Events

If I have a human character and a car character, a ‘MainAttack’ action event will probably be different for each, and in each Pawn you would implement it to maybe punch for the person and fire a gun mounted on the car.

Interface

To think of it in terms of an interface, lets say you and your car can both explode. You could create a ‘PawnEffects’ Interface with methods like Explode, PowerUp, Teleport, etc. You can add interfaces to your classes in ‘Class Settings.’ Now you can implement the ‘Explode’ method in each pawn that has the interface. The car can play an explosion animation, and the human can play a juicy gross guts thing.