为Character创建插槽(socket)并绑定另一个actor(比如一个武器),打开角色骨骼后找到要创建的位置,右键add socket
创建好以后修改socket的name和transform:
然后就可以用C++代码绑定武器到这个socket,通过参数SocketName指定:
if (!UnitSelector) { UnitSelector = GetWorld()->SpawnActor<AActor>(UnitSelectorClass); } if (UnitSelector) { UnitSelector->AttachRootComponentToActor(SelectedHero, FName("LeftHandSocket")); }
如果不传递SocketName,绑定的位置不太确定,可以进游戏看效果再设置SpawnActor()函数的transform参数:
/** * Spawn Actors with given transform and SpawnParameters * * @param Class Class to Spawn * @param Location Location To Spawn * @param Rotation Rotation To Spawn * @param SpawnParameters Spawn Parameters * * @return Actor that just spawned */ AActor* SpawnActor( UClass* InClass, FVector const* Location=NULL, FRotator const* Rotation=NULL, const FActorSpawnParameters& SpawnParameters = FActorSpawnParameters() ); /** * Spawn Actors with given transform and SpawnParameters * * @param Class Class to Spawn * @param Transform World Transform to spawn on * @param SpawnParameters Spawn Parameters * * @return Actor that just spawned */ AActor* SpawnActor( UClass* Class, FTransform const* Transform, const FActorSpawnParameters& SpawnParameters = FActorSpawnParameters());
其他参考:
Attaching a weapon or object to hand or socket(蓝图操作)
https://www.youtube.com/watch?v=fyC57urfKtE
如果是为static mesh创建socket,直接在details面板的下面点击创建:
具体操作见官方文档:
https://docs.unrealengine.com/latest/INT/Engine/Content/Types/StaticMeshes/HowTo/Sockets/index.html