###### tags: `UE4` # UE4 使用藍圖生成物體 Part 1 * 創立新的Actor藍圖物件,並且將其命名為BP_FloorTile。   * 點選左上Add componment 新增 Scene 和 Cube物件。  * 將Cube元件改名為Floor,並且將Scale X Y Z設為10 10 0.1 將Location設為 500 0 0 ,並且為Floor設定材質。  * 接著複製Floor元件,調整大小以及距離,讓他在原本的Floor元件旁邊出現牆壁。  * 點選左上Add componment 新增 Arrow物件,並該物件改名為AttachPoint,並將Location改為1000 0 0,這項物件會幫助我們引導生成方位。  * 接下來我們要新增一個函式,點選左側+Function 並將其改名為 GetAttachTransform。  * 接著右鍵新增Get World Transform,並且點選Get Attach Transform 元件,點選右側OUTPUT 有個New 按鈕,新增返回節點並將其改名成AttachTransform以及設為Transtorm型態。最後將其和Get World Transform 的 Return Value值連接在一起。    * 隨時記得點選Comple & Save,接著回到主畫面,點選Flie,建立一個新的Level 選擇 Default。  * 接著點選到Airsim C++ Classes 資料夾下方的AirsimGameMode ,右鍵它新增一個藍圖建立於AirsimGameMode基準上。  * 接下來點開MyAirsimGameMode藍圖,我們一樣先新增一個函式,點選左側+Function 並將其改名為 AddFloorTile。  * 點選藍圖空白地方右鍵,新增Spawn Actor from class物件,它是一項函式用來新增我們剛剛所製作的物件。  * 將Spawn Actor from class物件的Class 選擇為BP_FloorTile,並且對Spawn Transform節點右鍵,選擇 Promote to Varible ,將其轉為變量,並將改名為Next Spawn Point。  * 接著點選上方,切換至Event Graph,將左邊AddFloorTile函數拖曳進來,並將Event Begin Play 和其連接。  * 接著回到AddFloorTile函數藍圖這,新增一個Cast to BP_FloorTile元件進入,並將其和Return Value連接。  請務必確保要在"AddFloorTile"進行上面進行此動作。 * 接著在新增一項Get Attach Transform,和As BP Floor Tile連接。  * 接著拖曳左方NextSpawnPoint變量到Attach Transform上面。  * 接著回到"Event Graph",右鍵空白處建立ForLoop物件,這相當於程式中的Loop迴圈。並且將其連接至Event begin play 上 Loop Body連接至 Add floor tile上,並將其first index設0,Last index 為9 ,這代表這項迴圈會執行10次。  * 我們接下來回到 BP_Floortlie的Viewport,點選左上Add componment 新增BoxCollision,將其命名為EndTrigger,將他的Location設為1056 0 190,將他的Box Extent設為32 500 200。  * 選擇到Collision Preset 將其設定為OverlapOnlyPawn  * 選擇到在更下方一些的Events ,點選 On component begin overlap +  * 接著點選藍圖空白處,新增 Cast to Myairsimgamemode,和Get Game Mode,將其連接起來  * 接下來新增 Addfloortile元件,將其與As Myairsimgamemode 連接,並且新增Delay元件,將其延遲設為2。  * 最後我們要建立一個Destroy Actor元件 ,並將其設為自己,按下Complie & Save。  * 回到主畫面,刪除原本的地板,並且將PlayStart的X位置設為200。 按下Play 你可以看到路面會無限生成出來。 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up