UE4 角色拾取武器

角色設(shè)置

為了使角色能夠“抓取”武器,需要在骨骼中添加功能---socket,即插槽。
找到放置武器的位置,右鍵添加插槽即可(項目不同可能示例截圖不一致,但做法相同)


添加武器插槽.png

放置后,直接綁定會發(fā)現(xiàn)武器位置和想象中不太一樣;這里我們右鍵為socket添加預(yù)覽,通過預(yù)覽調(diào)整武器。


武器位置調(diào)整.png

藍(lán)圖實現(xiàn)

武器拿到手中主要通過AttachToComponent方法,既可以在武器藍(lán)圖腳本實現(xiàn)也可以在角色腳本中實現(xiàn),原理相同。

  • 首先為武器添加事件OnComponentBeginOverlap;
  • 然后檢測碰撞物體是否為角色
  • AttachToComponent
  • (有時需要取消物體與角色的碰撞或其它調(diào)整,視具體情況而定)
    如下:
    這里注意AttachToComponent的具體設(shè)置,target為attach的物體,parent為被attach的scence component,此處為武器的藍(lán)圖腳本,因此target為self;parent應(yīng)設(shè)置在角色的mesh上。規(guī)則為Snap to Target


    藍(lán)圖

代碼實現(xiàn)

void AChilikoCollectActor::NotifyActorBeginOverlap(AActor* OtherActor)
{
  Super::NotifyActorBeginOverlap(OtherActor);

  //碰撞后提示、特效等處理

  if (Role == ROLE_Authority)
  {
    AChilikoCharacter* MyCharacter = Cast<AChilikoCharacter>(OtherActor);
    if (MyCharacter)
    {
        
        // 拾取前的處理,如播放動畫/按鍵提示等。
        AttachToComponent(MyCharacter->GetRootComponent(), FAttachmentTransformRules::SnapToTargetNotIncludingScale, FName(TEXT("hand_rSocket")));
        // 拾取后的處理
    }
  }
}

當(dāng)然,也可以通過其它碰撞處理方法實現(xiàn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容