How to properly implement Point&Click Movement

I am trying to implement a Point&Click Movement, so I realized, I will need an AI Controller posessing my Character.

So far, I made a C++ classes extending:
// Super: MyClassName
APlayerController: AMainPlayerController
AAIController: AMainPlayerAIController
ACharacter: AMainPlayer

I have set in my gamemode to use the Controller AMainPlayerController posessing a Spectator Pawn.

Then, I have made the AMainPlayerController spawn the AMainPlayer and AMainPlayerAIController.

My AMainPlayer holds a reference to its AMainPlayerAIController. I have made the AMainPlayer accept input with AutoPossessPlayer = EAutoReceiveInput::Player0;.

Now, I am starting to think this is getting kind of hacky, I’m not sure if it will even work properly, is this the right approach or is there a better way?