ABall* Ball = Cast(OtherActor);
ASoccerGameCharacter* Player = Cast(OtherActor);
So, the OtherActor is what? The ball or the player? Without checking the cast or tag or anything else, how can you know?
ASoccerGameCharacter* Player = Cast<ASoccerGameCharacter>(GetWorld());
This is not how you get the player character. The cast fails. Player is null. Trying to access CharacterSphere or PowerUpIsCollected will cause a crash.