# 我在学习装备角色的时候遇到两个问题，1.武器无法加载到两个网格体  2.第三人称动画不能随镜头上下点头 

**URL:** <https://forums.unrealengine.com/t/1-2/2687512>\
**Category:** 简体中文 (Simplified Chinese)\
**Tags:** unreal-engine, CPP, question\
**Created:** [December 24, 2025, 9:58pm UTC](https://forums.unrealengine.com/t/1-2/2687512 "2025-12-24T21:58:15Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![rosefinch21](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rosefinch21/32/702226_2.png) [@rosefinch21](https://forums.unrealengine.com/u/rosefinch21)\
**Post date:** [December 24, 2025, 9:58pm UTC](https://forums.unrealengine.com/t/1-2/2687512/1 "2025-12-24T21:58:15Z")

</div>

我在学习UE5.7官方文档入门教程里的第一人称冒险游戏，在学习到装备角色的时候遇到两个问题。

1.一个武器资源无法同时加载到第一人称和第三人称网格体上，后一个加载的网格体上不会出现武器。我尝试再创建一个武器副本加载到另一个网格体，并且对玩家隐藏来达到只看到第一视角的武器，并且第三视角的影子上有正常的武器影子，可能是我隐藏的的方法不对，无法做到只隐藏武器而保留影子。

2.加载到第三人称的动画不能随镜头上下点头。

这是官网文档链接：[用C++工具装备角色 | 虚幻引擎 5.7 文档 | Epic Developer Community](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/equip-your-character-with-cplusplus-tools)

下面是武器绑定到角色部分的代码：

> void AMyCharacter::AttachTool(UEquippableToolDefinition\* ToolDefinition)  
> {  
> // 只有角色没有该工具时才允许添加  
> if (not IsToolAlreadyOwned(ToolDefinition))  
> {  
> AEquippableToolBase\* ToolToEquip = GetWorld()-\>SpawnActor(ToolDefinition-\>ToolAsset, this-\>GetActorTransform());  
> // 将工具附加到角色  
> // 当为true时，虚幻引擎会将两个物体接合在一起，以便它们在移动时作为一个整体交互。 一些常用的附加规则包括KeepRelative（保持与父级的相对变换）、KeepWorld（保持世界变换）和SnapToTarget（对齐到父级变换）  
> FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true);  
> // 将工具附加到角色的右手  
> ToolToEquip-\>AttachToActor(this, AttachmentRules);  
> ToolToEquip-\>AttachToComponent(FirstPersonMeshComponent, AttachmentRules, FName(TEXT(“HandGrip\_R”)));
> 
> ```
> //AEquippableToolBase* ToolToEquip2 = GetWorld()->SpawnActor<AEquippableToolBase>(ToolDefinition->ToolAsset, this->GetActorTransform());
> ToolToEquip->AttachToActor(this, AttachmentRules);
> ToolToEquip->AttachToComponent(GetMesh(), AttachmentRules, FName(TEXT("HandGrip_R")));
> ToolToEquip->OwningCharacter = this;
> 
> ```

> ```
> GEngine->AddOnScreenDebugMessage(-1, 500.0f, FColor::Blue, GetOwner()->GetName());
> // 将工具添加到角色的物品库中
> InventoryComponent->ToolInventory.Add(ToolDefinition);
>   
> // 设置工具的动画实例类
> GetMesh()->SetAnimInstanceClass(ToolToEquip->ThirdPersonToolAnim->GeneratedClass);
> FirstPersonMeshComponent->SetAnimInstanceClass(ToolToEquip->FirstPersonToolAnim->GeneratedClass);
> 
> EquippedTool = ToolToEquip;
> // Get the player controller for this character
> if (APlayerController* PlayerController = Cast<APlayerController>(Controller))
> {
> if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer()))
> {
> // 添加工具输入映射,因为设置优先级为1高于默认输入映射，所有有相同输入的映射，优先执行此映射，优先级数字越大的优先级越高
> Subsystem->AddMappingContext(ToolToEquip->ToolMappingContext, 1);
> }
> ToolToEquip->BindInputAction(UseAction);
> }
> 
> ```
> 
> }  
> }

向各位大佬求教。
