最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

虛幻引擎C++學(xué)習(xí)筆記(二)

2022-02-22 04:23 作者:HarrickHeng  | 我要投稿

五、創(chuàng)建項目

1.創(chuàng)建默認C++空白項目,并重命名項目名稱。

2.在Content目錄中創(chuàng)建_Game文件夾(下劃線開頭可避免字母順序排列)。

3._Game文件夾內(nèi)創(chuàng)建Character、GameMode、Maps文件夾。

4.保存當(dāng)前場景至Maps中,重命名DefalutMap。

5.Settings-項目設(shè)置(ProjectSettings)-Maps&Modes-Defalut Maps-Editor Startup Map與Game Default Map選擇你保存的DefalutMap。

6.進入C++ Classes文件夾,以系統(tǒng)生成的GameModeBase基礎(chǔ)上右鍵點擊,創(chuàng)建藍圖于GameMode文件夾中,重命名GameModeBaseBP(BP表示藍圖)。

7.在World Settings-Game Mode設(shè)置你創(chuàng)建好的GameModeBaseBP。

8.Settings-項目設(shè)置(ProjectSettings)-Maps&Modes-Defalut Mode選擇你創(chuàng)建好的ShooterGameModeBaseBP。

9.保存所有(Save All)。

GameMode保存了你當(dāng)前關(guān)卡(Level)的規(guī)則內(nèi)容,包含了默認Pawn、HUD、Player Controller、Game State、Player State、Spectaor。不同關(guān)卡切換可以設(shè)置不同的GameMode,達成不同的規(guī)則需求(例如開始游戲菜單、多人與單機模式的切換等等)。

六、Character類創(chuàng)建

1.C++ Classes文件夾中創(chuàng)建一個Character類,命名為ShooterCharacter。

2.在ShooterCharacter基礎(chǔ)上右鍵創(chuàng)建藍圖,放入Character文件夾中,并命名為ShooterCharacterBP。

3.打開你創(chuàng)建的ShooterGameModeBaseBP,在Classes-Default Pawn Class中選擇ShooterCharacterBP,編譯保存。

4.Visual Studio的編譯快捷鍵為:Ctrl+Shift+B。

七、調(diào)試語句(UE_LOG)

在開發(fā)過程中,使用調(diào)試語句是十分重要的。使用UE_LOG宏可以在編輯器Output Log窗口看到你在代碼中打印的信息。

CategoryName:使用之前需要先定義Log Category,Category會在Log中體現(xiàn)出來,以便在茫茫Log中更容易區(qū)分其作用或所屬模塊。

Verbosity:ELogVerbosity中定義的枚舉,在輸出窗口中顯示不同的顏色來代表不同語義,例如Log、Warning、All等。

Format:輸出內(nèi)容,并可以使用標準格式化輸出下一參數(shù),如%d、%f、%s等。如果傳入引擎的FString類型的參數(shù),需要加上*號重載。例如:

八、攝像機搖桿創(chuàng)建

SpringArmComponent相當(dāng)于我們的手機自拍桿或攝像機的機械臂,方便我們調(diào)整攝像機的視角,其他引擎要實現(xiàn)這項功能需要自己搭建,而虛幻引擎卻已經(jīng)幫我們寫好這項功能。

1.在我們ShooterCharacter的頭文件的私有區(qū)域?qū)懭肼暶鳌?/p>

變量的開頭需要寫class來編譯器承諾這個組件確實存在,否則編譯器會報錯。

2.在公有區(qū)域?qū)懸粋€getter函數(shù),方便外部獲取這個組件。

像這樣獲取內(nèi)容的簡單函數(shù)(函數(shù)內(nèi)部無其他操作,無循環(huán)),我們可以在開頭寫FORCEINLINE講此函數(shù)轉(zhuǎn)為內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)是C++內(nèi)置的特性,可以將命令編譯器跳過一般的ROI 分析(Return On Investment),提高函數(shù)的執(zhí)行效率。在有寫時候,編譯器會拒絕將一個函數(shù)內(nèi)聯(lián),所以加上FORCE可以強行內(nèi)聯(lián)。

需要強調(diào)的是,內(nèi)聯(lián)函數(shù)不適合內(nèi)部代碼較長或者存在循環(huán)操作的函數(shù),因為導(dǎo)致內(nèi)存消耗代價較高與調(diào)用開銷加大。

3.使用UPROPERTY給CameraBoom進行標記,使其暴露給藍圖中。

meta = (AllowPrivateAccess = "true")可以將一個私有變量公開給藍圖,如果不寫此句私有變量是不允許被暴露給藍圖的,會造成編譯報錯。

4.之前向編譯器承諾CameraBoom存在,那現(xiàn)在就要實現(xiàn)它。在cpp文件的構(gòu)造函數(shù)內(nèi)創(chuàng)建CameraBoom。

5.在文件頭部添加USpringArmComponent的頭文件。

6.頭文件地址尋找有兩種方法:

①在解決方案資源管理器窗口中搜索組件名稱(去掉首字母),并加上.h后綴,點擊頭文件在屬性窗口查看(F4快捷鍵)。

②在官方API文檔中直接搜索組件名稱,復(fù)制include的代碼。地址:

https://docs.unrealengine.com/4.27/en-US/API/

7.編譯保存,打開角色藍圖,可以看到攝像機搖桿CameraBoom已經(jīng)被創(chuàng)建,并且在藍圖詳情中看到該屬性,且不可被編輯修改。

九、跟隨攝像機創(chuàng)建

前面攝像機搖桿創(chuàng)建好之后,加下來就是創(chuàng)建攝像機了。

1.在頭文件聲明FollowCamera變量與返回函數(shù),正如聲明CameraBoom時一樣。

2.在構(gòu)造函數(shù)中實現(xiàn)你聲明的變量。

3.別忘了引入CameraComponent的頭文件。

4.編譯保存,打開角色藍圖,可以看到攝像機安裝到搖桿上了。

十、控制器(Controller)

[官方文檔] ? ?https://docs.unrealengine.com/4.26/en-US/API/Runtime/Engine/GameFramework/AController/

1.控制器Controller是一個不可見、無位置、有方向(一些函數(shù)可以獲取和設(shè)置控制器的旋轉(zhuǎn))的實體。它可以控制Pawn,從而控制其動作的非實體Actor。

2.我們可以通過控制器的旋轉(zhuǎn)信息(FRotator)來計算得出控制器的方向向量(FVector)。

3.控制器的工作流:用戶—>輸入鼠標鍵盤—>控制器—>移動組件—>角色。

十一、實現(xiàn)角色移動

創(chuàng)建輸入映射

1.我們需要創(chuàng)建角色移動的操作指令,這里包括鍵盤與手柄的輸入:

Project Setting—Input—Bindings—Axis Mappings—創(chuàng)建MoveForward與MoveRight兩個輸入映射。

2.使用鍵盤WASD與手柄的Left Thumbstick X/Y-Axis進行控制綁定。

3.這里使用Axis軸映射而非Action是因為角色需要每幀都接受玩家的輸入信息,從而實現(xiàn)即時的控制轉(zhuǎn)向。

控制器控制移動組件

1.打開角色代碼,聲明控制函數(shù)。

2.實現(xiàn)聲明函數(shù)。

3.實現(xiàn)移動組件的執(zhí)行。

4.編譯保存,測試角色水平方向的移動。

十二、每幀時間(DeltaTime)

DeltaTime:兩幀之間的時長。

Frame:幀,一張圖片在屏幕中刷新。這是比秒更小的計量單位,程序以每幀進行畫面渲染(通常60FPS或120FPS才能保證我們感到畫面流暢)。

Frame Rate(FPS):幀率,每秒刷新的幀數(shù)。這個數(shù)值是不斷變動的,幀率越高說明畫面越流暢,硬件越穩(wěn)定幀率變動也越穩(wěn)定。

Tick:與幀是同義詞,函數(shù)Tick里執(zhí)行的事情等同于每幀執(zhí)行的事情。

幀率并不是一個固定的數(shù)值,這影響我們開發(fā)的指定性。例如我們需要讓物體每秒1cm地進行移動,這時我們就應(yīng)該這樣處理:

為了解決這種問題,Tick函數(shù)提供了DeltaTime,方便我們完成需求:

推導(dǎo)過程:

%E9%80%9F%E5%BA%A6%20v%3Dcm%2Fsec

%E6%AF%8F%E5%B8%A7%E6%97%B6%E9%97%B4DT%3Dsec%2Fframe%0A

%E6%AF%8F%E5%B8%A7%E8%B7%9D%E7%A6%BBv*DT%3Dcm%2Fframe%0A

十三、實現(xiàn)角色轉(zhuǎn)向

創(chuàng)建輸入映射

1.我們需要創(chuàng)建角色移動的操作指令,這里包括鍵盤與手柄的輸入:

Project Setting—Input—Bindings—Axis Mappings—創(chuàng)建TurnRightRate與LookUpRate兩個輸入映射。

2.使用鍵盤上下左右反向鍵與手柄的Right Thumbstick X/Y-Axis進行控制綁定。

3.這里使用Axis軸映射而非Action是因為角色需要每幀都接受玩家的輸入信息,從而實現(xiàn)即時的控制轉(zhuǎn)向。

控制器控制移動組件

1.打開角色代碼,聲明控制函數(shù)。

2.聲明基礎(chǔ)轉(zhuǎn)向速率。

3.實現(xiàn)聲明函數(shù)。

4.實現(xiàn)移動組件的執(zhí)行。

5.編譯保存,測試角色的轉(zhuǎn)向功能。

十四、實現(xiàn)鼠標旋轉(zhuǎn)與角色跳躍

鼠標旋轉(zhuǎn)控制視野

1.Project Setting—Input—Bindings—Axis Mappings—創(chuàng)建MouseTurn與MouseLookUp兩個輸入映射。

2.分別綁定Mouse X/Y鼠標輸入,其中MouseY輸入值需改為-1適應(yīng)玩家控制習(xí)慣。

3.代碼綁定,編譯測試。

角色跳躍

1.Project Setting—Input—Bindings—Action Mappings—創(chuàng)建Jump輸入映射。

2.綁定空格鍵與手柄Face Button Bottom。

3.代碼綁定,編譯測試。

十五、添加模型(Mesh)

1.打開虛幻商城(Marketplace),搜索Paragon,免費下載你喜歡的角色模型資產(chǎn)包。當(dāng)然你也可以添加自己準備好的角色模型。

2.打開角色藍圖ShooterGameModeBaseBP,點擊Mesh加載你下載的模型。

3.虛幻引擎的游戲?qū)ο笫且訶軸方向為正方向,需要把角色的面向?qū)蔢軸方向。

4.把模型位置下拉到與膠囊體平齊,膠囊體要剛好覆蓋模型。


虛幻引擎C++學(xué)習(xí)筆記(二)的評論 (共 條)

分享到微博請遵守國家法律
敦煌市| 眉山市| 辽阳市| 南昌县| 龙游县| 呼图壁县| 百色市| 通渭县| 南城县| 本溪市| 武隆县| 辉县市| 新平| 通山县| 任丘市| 光山县| 西盟| 吉木乃县| 丹阳市| 河池市| 将乐县| 二连浩特市| 阳泉市| 武功县| 天柱县| 新宁县| 开原市| 贵德县| 若羌县| 章丘市| 且末县| 宁河县| 天峻县| 浦县| 平陆县| 利辛县| 龙泉市| 耒阳市| 洞口县| 西昌市| 五寨县|