Pawn
當今天一個物體想要受到玩家或是AI的意識控制時,就必須要有一個能夠接受輸入事件的組件和移動功能的組件,此時我們可以不必從Actor慢慢開始組裝要的功能,UE已經提供了有相關控制功能的類別 - Pawn。
拿遊戲中的例子來舉例,路邊的石頭、雜草、樹木...等等場景物件是不會受到玩家的輸入而影響的物體,因此這些歸類為Actor;而像是在路上行走的NPC、在水中游動的魚、玩家控制的主角都會聽從玩家的輸入或是AI的輸入而做出不同的反應,因此則歸類為Pawn。
Pawn是繼承於Actor,並而外提供了3種功能 :
- 可以被Controller所控制
- 具有物理碰撞效果
- 相關移動功能接口
這些功能可以讓物體接受輸入控制(玩家/AI),並且做出相對應的回饋(像是移動)。
Pawn如何控制主要是透過Controller,而UE內有2種Controller :
- PlayerController - 由玩家控制時是透過PlayerController這個類別進行控制,PlayerController就扮演著玩家和Pawn之間的接口,當玩家輸入後由PlayerController決定要做什麼命令,再將命令(例如跑步、蹲、跳...等等)傳給Pawn實作。
- AIController - 由電腦觀察周遊戲世界的資訊,透過特定邏輯給予Pawn命令,因此AIController就不依賴玩家的輸入,而是透過BehaviorTree來操作Pawn。
<Pawn和Controller之間的關係 來源>
Character若當今天要控制的物體需求不只有要移動而已,而需要再加上Skin模型、動畫以及像人類一樣的移動慣性等等需求,UE提供了針對這類需求的預設類別 - Character。
Character繼承於Pawn,可以說是Pawn的強化版,本多了幾種功能 :
- SkeletalMesh - 能夠給予一個Skin過的模型,並且也提供動畫控制器。
- CharacterMovement - 具有多樣化的擬人移動控制,像是走路、飛行、游泳等移動模式。
因此Character類別非常適合拿來做具有動畫的生物。
總結
以上介紹的物件類別是新手時期在接觸UE時會很常遇到的,尤其是從Unity跳過來的,會被GameObject的概念綁住,分不清楚Actor、Pawn、Character的區別(個人經驗)。
<在創建BP或是C++時,都會要求選擇繼承類別>
因此此篇最主要就是針對Actor相關概念去做介紹,讓新手能夠快速理解UE世界中各種Actor的功能。
參考資料