# Unreal 隨手筆記#3 ## 角色控制 控制角色是大部分遊戲必要元素之一,而網路上大部分的教學不是英文就是簡體,於是這篇教學文就此誕生。角色控制其實沒有你想的這麼困難,本篇教學將會讓你學會如何控制角色的移動以及跳躍 ### 成果畫面 {%youtubeiGgeDAb_lY0 %} ### 角色建立 因為我們要建立**可控制**的物件,就不能使用像是Actor這種最基本的Blueprint。當然Unreal也幫你寫好了可以被控制的Blueprint,叫做**Character** <b>新增</b> 創建方法:**Content Browser** -> **Blueprint Class** -> **Character**  <b>球體與相機</b> - 新增的元件 + Sphere + Camera  相機的位置設定,讀者也可去做調整  Viewport  ### 創建Gamemode 如果要使用Unreal原本內建寫好的移動,那直接套用官方範本的Gamemode就好,但是我們今天練習寫自訂義的控制規則,所以要創建一個新的Gamemode <b>新增</b> 創建方法:**Content Browser** -> **Blueprint Class** -> **Game mode Base**  <b>設定</b> 創建完後要去World Setting中找到Gamemode,把**GameMode Override**設定成你創建的GameMode。接著下方有個**Default Pawn Class**設定為你創建的角色  如果遊戲要匯出給大家玩的話,同樣在Project Setting也要設定 開啟方式:**Edit** -> **Project Setting** -> **Map&Modes**  ### 移動、跳躍設定 Unreal中可以設定特殊鍵來去觸發事件,你可以在Project Setting -> Input -> Bindings去做設定 <b>設定方式</b> 你可以看到有Action跟Axis兩種輸入方式,差異在於Action是一次性的事件,而Axis是持續型的事件。Axis額外有Scale這個參數可以去設定,介於1~-1。舉個例子,如果往前設定為1,則-1會變成相反方向 <b>按鍵設定</b> - Action Mappings + 事件:jump - 按鍵:空白鍵 - Axis Mappings + 事件:Foward/Back - 按鍵:W (往前) - 按鍵:S (往後) + 事件:Right/Left - 按鍵:D (往右) - 按鍵:A (往左)  ### 移動腳本 接著要開始讓角色動起來,我們可以在角色的Blueprint中去創建剛剛建立的事件 <b>新增移動事件</b> 搜尋你定義的事件名稱就可以找到  <b>完整程式</b>  看上去非常的簡單,當然我也會在下方說明每個節點的功能 - InpurAxis Foward/Back:當遊戲開始時,它會像是一個loop重複執行。按下該事件之輸入鍵時,會輸出事先設定好的Axis Value給與其相連的節點,而在未按下時,則會輸出0。這個事件控置前後  - InputAxis Right/Left:當遊戲開始時,它會像是一個loop重複執行。按下該事件之輸入鍵時,會輸出事先設定好的Axis Value給與其相連的節點,而在未按下時,則會輸出0。這個事件控置左右  - Foward:為一個向量變數(1,0,0)  - Right:為一個向量變數(0,1,0)  - Add Movement Input:Unreal中對角色進行移動控制的節點,**Target**預設為目標本身,**World Direction**為移動之方向向量,**Scale Value**則是移動量大小  ### 跳躍程式 Unreal有內建跳躍的方法給我們使用,叫做Jump和Stop Jumping。我們可以將Action事件的兩個輸出節點個別連到Jump和Stop Jumping即可實現跳躍效果 <b>完整程式</b>  :::warning 如果執行遊戲時角色沒有反應,請至**Character Blueprint(角色)** -> 點選**Components(self)** -> **Detail** -> **Pawn** -> **Auto Possess Player**設定為**Player 0**   ::: 實作完成!!! --- ###### tags: `Unreal`
×
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