Child classes are a good approach. Key is the parent class only contains logic/variables that would be global to all child classes. Each child parent would contain “custom” logic/variables for its type. Adding said logic could be done directly in that class, Or by using actor components that are added at runtime.