この問題は単純で、 SocketにAttachするためにはその対象のComponentの直子でなければならない 、という決まりがあるためです
AttachActorToActor
は字面からすると、ActorがActorにくっついているように思えますが、実際はTargetのRootComponentがParentActorのRootComponentにAttachされる、という形で解決されています
さて、ここで問題の キャラクターのスケルタルメッシュやアニメーションシーケンスをレベルに配置
したときに生成されるActorですが、これはSkeletalMeshActorといい、RootComponentがSkeletalMeshComponentになっています
この場合、SkeletalMeshComponent(Socketを持つComponent)の直子となるため、SkeletonのSocketにAttachするための条件が満たされます
対してCharacterですが、こいつのRootComponentはCapsuleComponentです
CapsuleComponentはSocketを持たないため、AttachActorToActorでSocketを指定しても想定通りにAttachできません
この場合でSocketにくっつけようとするなら、その下のMesh(SkeletalMeshComponent)に対してAttachActorToComponentをする必要があります
なお、Socket名が一致するものが見つからなかった場合、そのComponentのPivot位置にAttachされます
加えて,[AttachActorToComponent]のsocket Nameがデタラメでも希望通りの挙動をします.
の原因はこれです
質問のパターンではSocketの位置にSceneComponentがあり、SceneComponentのある位置に対象がAttachされたため、正しい風になっているだけです
質問タイトルとずれますが,ソケットの大きさは気にしなくてもいいのでしょうか?
もちろん気にしましょう
Scaleを SnapToTarget
にした場合、AttachしたComponentはSocketのScaleを継承するため、意図しない挙動を招きます