[RESOLVED] I am making a mini soccer game using a power up, soccer ball and blockers

The way you do is ok:

ABall* Ball = Cast<ABall>(OtherActor);

You just need to check Ball before using it:

if (Ball)
{
    Ball->Destroy();
}

For the player also works:

ASoccerGameCharacter* Player= Cast<ASoccerGameCharacter>(OtherActor);

But, without checking the result of the cast, you won’t know if the OtherActor is a Ball or the Player.

This is C++. Assumptions = crash. I’m sure about X = crash.