政府內(nèi)網(wǎng)網(wǎng)站建設(shè)合肥網(wǎng)絡(luò)seo
寫在前面
Actor是可以放進(jìn)地圖的最基本類,這里主要是介紹一下Actor的使用。
一、空間坐標(biāo)系
1. Actor的變換操作
-
Actor的變換變換操作主要包括四個部分:
- 位置;
- 旋轉(zhuǎn);
- 縮放;
- 上面三者都是對應(yīng)三個軸進(jìn)行變換;
- 紅色代表前(X軸),繞X軸旋轉(zhuǎn)是Roll;
- 綠色代表右(Y軸),繞Y軸旋轉(zhuǎn)是Pitch;
- 藍(lán)色代表上(Z軸),繞Z軸旋轉(zhuǎn)是Yaw;
- 移動性;
- 有三個可選項;
- 靜態(tài):游戲過程中Actor不可移動,屬性也不可以更改;
- 固定:游戲過程中Actor不可移動,但可以更改它的一些屬性;
- 可移動:游戲過程中Actor可以移動;
- 可以參考博客:UE4 Actor移動性以及光源移動性類型;
-
地圖中的每一個單位代表1厘米;
2. 世界坐標(biāo)系和局部坐標(biāo)系
- (1) 在Editor中點擊地圖上面的的小按鈕可以切換世界坐標(biāo)系和局部坐標(biāo)系;
-
兩個坐標(biāo)系對Actor變換影響如下:
- 對于位移變換和縮放變換,兩個坐標(biāo)系均無影響;
- 對于旋轉(zhuǎn)變換而言,旋轉(zhuǎn)的發(fā)生均參照世界坐標(biāo)系,對世界坐標(biāo)系無影響,但對局部坐標(biāo)系有影響,局部坐標(biāo)系相當(dāng)于是跟著物體在旋轉(zhuǎn),始終與物體保持最初的相對位置;
-
(2) 在代碼中也可以使用兩種坐標(biāo)系;
-
使用局部坐標(biāo)系也就是將變換的視角代入Actor本身,操作是相對于Actor而言的,是常用的寫法,例如:
AddActorLocalOffset(FVector(1, 0, 0));
AddActorLocalRotation(FRotator(1, 0, 0));
- 使用世界坐標(biāo)系也就是用上帝視角進(jìn)行Actor的變換,X軸、Y軸和Z軸永遠(yuǎn)不變且唯一,這種用法比較少,一般是用來和地圖上的其他東西對齊,例如:
AddActorWorldOffset(FVector(1, 0, 0));
AddActorWorldRotation(FRotator(1, 0, 0));
二、創(chuàng)建一個Actor的C++類
- 創(chuàng)建的C++類也是放在Source文件夾中的Public和Private文件夾中;
- 選擇Actor作為繼承的父類;
- 頭文件中已經(jīng)默認(rèn)定義了三個函數(shù):
- 默認(rèn)的構(gòu)造函數(shù);
BeginPlay()
函數(shù):當(dāng)Actor在游戲中創(chuàng)建完實例后就會執(zhí)行的內(nèi)容;Tick()
函數(shù):Actor在游戲中的每一幀都會執(zhí)行的內(nèi)容;
.cpp
文件中也已經(jīng)默認(rèn)實現(xiàn)了三個函數(shù),如下:
三、實現(xiàn)功能
- 在頭文件中增加若干成員變量,如下:
-
一些注意的點如下:
UStaticMeshComponent
是掛載的組件,說明符雖然是VisibleAnywhere
,但實際上在Editor細(xì)節(jié)面板上該變量下仍可以自由設(shè)置屬性,以改變物體的形狀;- 帶Visible說明符的屬性在Editor面板上是類似于只讀類型,不希望用戶通過Editor直接修改值的屬性均設(shè)置為Visible說明符;
ToolTip
說明符是在Editor中給變量以鼠標(biāo)懸停提示,默認(rèn)是變量上方的注釋內(nèi)容,當(dāng)然也可以顯式設(shè)置,中文注釋可能會出現(xiàn)亂碼;- 在聲明變量時不要設(shè)置初值,而是在構(gòu)造函數(shù)中設(shè)置初值;
-
在
.cpp
文件中實現(xiàn)具體內(nèi)容,如下:
- 一些注意的點如下:
- 雖然變量在構(gòu)造函數(shù)中進(jìn)行了初始化,但設(shè)置了Edit說明符的變量的初始值仍然會改變,在Editor的細(xì)節(jié)面板上修改的值會直接覆蓋C++中的初始值,優(yōu)先級順序大概是:C++類初始值 -> 藍(lán)圖類(若用C++類創(chuàng)建藍(lán)圖類)的藍(lán)圖面板中的設(shè)置值 [Default級] -> 主面板的實例細(xì)節(jié)面板中的設(shè)置值 [Instance級];
- 所有變量都應(yīng)該進(jìn)行初始化;
- 調(diào)試代碼時可以嘗試用輸出到屏幕的方式;
四、在Editor中使用
- 直接拖動
FloatActor
類到地圖中可以生成實例; - 當(dāng)然也可以先用
FloatActor
生成對應(yīng)的藍(lán)圖類,然后再將藍(lán)圖類拖到地圖中以生成實例;
- 為實例設(shè)置基本的形狀和材質(zhì),否則當(dāng)游戲開始時是看不到的;
- 注意移動性應(yīng)當(dāng)設(shè)置為可移動,因為C++中設(shè)置了移動的功能;
- 在細(xì)節(jié)面板中搜索
Float Variables
分組,可以看到自定義的AFloatActor
的成員變量,如下:
- 最后點擊播放即可,如果勾選了
Should Float
,這個正方體就會沿水平面漂浮移動; - 播放時,按
Shift + F1
可以將鼠標(biāo)退出游戲界面;