Identical Casts: one works; one doesn't

on the first function, you are passing in a pointer to an Actor.

on the second function, you are creating a blank Actor pointer out of nothing. The only thing you could cast it as would be AActor and UObject.

Before you can cast, you would have to find your other actor in the world, then set OtherActor equal to it

For example:

OtherActor = GetOwner();

then cast it.