###### 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.