I’ll answer your second question first:
Which component are we hitting and where does it come from???
The Actors we are interested in, the chair and the table both have StaticMeshComponents:
We didn’t attach those component, you are right about that. They came with the objects.
You need something like a StaticMeshComponent (more specifically a UPrimitiveComponent or a derived class, just like StaticMeshComponent) which contains the actual 3d geometry to make any collisions or physics happen. If you don’t have any 3d shape or form you obviously can’t collide with anything.
So can’t hit an Actor all by itself, it needs a UPrimitiveComponent for that! An Actor is more or less just a conatiner with a position in space, but with no form.
On to your first question:
Why are we using FHitResult::GetComponent() instead of FHitResult::GetActor() ?
Very simple: We’re using both of them anyways because we need them both!
We need a UPrimitiveComponent for PhysicsHandle->GrabComponentAtLocationWithRotation()