日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[unreal] 寻路:随机漫游的实现

發布時間:2024/1/1 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [unreal] 寻路:随机漫游的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

reference: https://forums.unrealengine.com/community/general-discussion/1377-ue4-pathfinding-basic-ai?1270-UE4-Pathfinding-basic-AI=

by : UE developer,IceWraith

? ? ? ? 隨機漫游的效果可以有很多種實現方法,這取決于你想要使用哪種系統。

? ? ? ? 最好的(也是最復雜的)方法是準備行為樹,不過你需要在編輯器首選項(菜單:編輯->編輯器偏好設置->試驗性功能)中開啟它們。你可以依照上面提到的教程,或者也可以按照以下步驟執行:

? ? ? ? (1) 創建新的黑板資源(右鍵人工智能->黑板),用來存儲目標點:只包含的單一的鍵,鍵的類型設置為BlackbordKeyType_Vector。

? ? ? ? (2) 創建新的行為樹任務,用以挑選隨機的位置,這既可以在藍圖中完成,也可以在C++中完成。

? ? ? ? 藍圖:新建一個藍圖(父類為BTTask_BlueprintBase), 重點在于:添加一個BlackboardKeySelector類型的變量,并且設置它的屬性為public(點擊變量旁邊的眼睛,設置=public)


? ? ? ? C++:新建一個繼承自UBTTask_BlackboardBase的類,實現你自己的ExecuteTask()函數。

? ? ? ? 代碼:

EBTNodeResult::Type UBTTask_FindLocation::ExecuteTask(class UBehaviorTreeComponent* OwnerComp, uint8* NodeMemory) {UNavigationSystem* NavSys = UNavigationSystem::GetCurrent(OwnerComp);AAIController* MyAI = Cast<AAIController>(OwnerComp->GetOwner());if (NavSys && MyAI && MyAI->GetPawn()){const float SearchRadius = 1000.0f;FNavLocation RandomPt;const bool bFound = NavSys->GetRandomPointInRadius(MyAI->GetPawn()->GetActorLocation(), SearchRadius, RandomPt);if (bFound){OwnerComp->GetBlackboardComponent()->SetValueAsVector(GetSelectedBlackboardKey(), RandomPt.Location);return EBTNodeResult::Succeeded;} }return EBTNodeResult::Failed; }

? ? ? ? (3) 創建新的行為樹,在root屬性中設置你的黑板。你可以從包含兩個節點的序列組合開始:FindSpot(在步驟2中做的)和MoveTo,它們共同訪問黑板中的同一個鍵。


? ? ? ? (4) 新建一個AI,并在里面運行剛才的行為樹。最簡單的方法是在關卡藍圖中調用SpawnAI


? ? ? ? 正如我所說的,這是最復雜的方法,但是為你之后的修改提供了一個最好的出發點。

? ? ? ? 下面是藍圖中比較簡單的設置:

? ? ? ? 1. 調用AIController中的MoveToLocation和MoveToActor方法。

? ? ? ? 2. 綁定AIController中的ReceiveMoveCompleted事件,來檢測是否達到了目的地。

? ? ? ? 3. 調用GetRandomPoint / GetRandomPointInRadius函數(NavData和FilterClass都設為空),在navmesh中選擇隨機目標點。


? ? ? ? 對于藍圖還有更為簡單的設置:

? ? ? ? 1. 調用AI MoveTo函數,它會為你執行結束時的事件。

? ? ? ? 2. 調用GetRandomPoint / GetRandomPointInRadius函數(NavData和FilterClass都設為空),在navmesh中選擇隨機目標點。


? ? ? ?最后,是C++的版本:

? ? ? ? 1.調用AIController中的MoveToLocation / MoveToActor函數。

? ? ? ? 2. 重寫AIController的OnMoveCompleted來檢測下一個目標點。

? ? ? ? 3. 訪問導航系統中隨機一個位置的方法如上所示。


? ? ? ? 這時候,讓我們討論一下怎樣修改尋路的影響因子。你可以定義包含不同行程或者耗費的導航區域,使用C++或者是藍圖。新建繼承自NavArea的藍圖/c++類。我強烈建議將遍歷耗費(初始耗費屬性)設置為大于等于1。區域通常由NavModifierVolume或者靜態網格構造的動態障礙物來完成的(為了了解更多的細節,可以查看靜態網格的NavCollision屬性)

? ? ? ? 此外,你可能還需要檢查額外的兩個actor: ANavLinkProxy(例如跳轉鏈接)和ANavigationTestingActor (尋路調試工具,包括單步顯示)

? ? ? ? 希望能夠給你帶來幫助!

總結

以上是生活随笔為你收集整理的[unreal] 寻路:随机漫游的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线一区二区三区四区 | 亚洲天天操 | 久久精品视频日本 | aaaaav | 亚洲精品国产精品国自产 | 亚洲国产精品视频一区二区 | 福利一二区 | 中文字幕1区2区3区 www.com黄色片 | 亚洲精品9999 | 欧美成人三级在线播放 | 姐姐的秘密韩剧免费观看全集中文 | 性久久久久久久久 | 亚洲视频在线网 | 午夜777 | 国产欧美日韩精品在线 | 亚色成人| 国产色无码精品视频 | 波多野结衣av在线免费观看 | 91久久综合 | 嫩模一区二区三区 | 亚洲涩涩网| 人妻换人妻a片爽麻豆 | 亚洲男人天堂2022 | 国产日韩精品suv | 黑人爱爱视频 | 视频福利在线观看 | 日韩av高清无码 | 国产免费观看一区 | 女人扒开双腿让男人捅 | 成人黄色激情小说 | 欧美日韩精品一区二区三区蜜桃 | 午夜影视在线观看 | 日韩欧美一区二区在线观看 | 在线观看中文字幕一区 | 91亚洲一区 | 天天干网址 | av青青草原| 国产一区二区视频免费观看 | 男人的天堂伊人 | 探花国产在线 | 婷婷在线综合 | 肉色超薄丝袜脚交一区二区图片 | 一级片www | 99九九视频 | 久久伊人婷婷 | 双性尿奴穿贞c带憋尿 | 91gao| 黄瓜视频在线免费看 | 小小姑娘电影大全免费播放 | 色香蕉av | 日韩成人av网址 | 日日艹夜夜艹 | 五月综合在线 | 精品无码久久久久久国产 | 国产亚洲精品成人av在线 | 亚洲高清在线播放 | av色图在线| 永久免费AV无码网站韩国毛片 | 屁屁影院一区二区三区 | 无码人妻精品一区二区蜜桃视频 | 欧美成人午夜 | 亚洲丝袜在线观看 | 亚洲熟妇色自偷自拍另类 | 天天摸天天做天天爽水多 | 国产高清成人 | 成人免费观看视频大全 | 九一精品在线 | 欧美一区二区公司 | 日本免费高清一区二区 | 特级西西人体444www高清大胆 | 欧美成人h版在线观看 | 国产成人97精品免费看片 | 国产美女主播在线 | 亚洲人精品 | 男人添女人下部高潮视频 | 中文无码一区二区三区在线观看 | 国产精品入口夜色视频大尺度 | 欧美群妇大交群 | 久久92| 正在播放av | 国产小视频免费 | 亚洲欧美日韩一区二区三区四区 | 综合激情久久 | jizz欧美性23 | 男人天堂avav | 激情欧美一区二区 | 黄色裸体视频 | 国内成人自拍 | 香蕉色网| 国产激情视频在线播放 | 五月天丁香社区 | 亚洲欧美一区二区三区 | 九九涩| 亚洲91在线| 一区二区三区精品在线 | 四虎影院一区 | 欧美丝袜一区二区 | 久久免费观看视频 | 日本韩国三级 |