前言
UObject關係層級 [1]
在Unreal,UObject是所有物件的基本,從Character、Acotr、Pawn、Component到Garbeage Collectable Object,使用UObject其中的好處也是Unreal背景會幫我們處理GC。
- Actor類別可以擁有Transform。
- Controller可以分很多種,如PlayerController、AIController、GameMode等等,以PlayerController來說,負責玩家input , camera, 連線玩家等功能。類似我們常在Unity自己定義的Manager物件,只是Unity需要拉到場景上。
- Pawn是可以被放在場景上的物件類別,例如場景上花、草、牆壁、怪物,Controller通常會搭配Pawn出現在場上(例如玩家由PlayerController控制、敵人由AI Controller控制)。
玩家輸入操作
在Project setting > Input 頁面可以新增Axis Mapping,
PlayerController中的藍圖擺設,如此就能前後移動。
C++撰寫
在header中定義水平、垂直移動的方法。
在cpp中實作方法
Bind Input
SetupPlayerInputComponent是Character類別提供的一個方法,會傳入Controller的Input binding元件。
在.cpp中實作,若是按鍵觸發型的(如Jump)可以使用BindAction,並指定觸發的
EInputEvent。
Animator 設定在Animator blueprint中設定變數來裝操作資訊。
我原本以為會像Unity一樣要在玩家腳本中去設定這些參數,但其實可以在Animation Blueprint中做到:
(套上animation後的效果。)
Raycast
raycast是常見的玩家與場景物件互動的方式。
[範例] 當玩家看著球物件,並按下滑鼠左鍵時,可以吃掉道具(道具消失)。
GetPlayerCameraManager
回傳player的camera物件,0代表 index = 0的玩家。
(藍圖版)