UE4でランゲームっぽいのを作ってみる

# まず始めに
初めまして！
クリーク・アンド・リバーのAdvent Calendar 2018 の12/2(日)～12/4(火)担当プログラマーの<font color="Red">**岩永**</font>です！ 

Qiitaに投稿することどころか、こういった記事を書くこと自体が初めてなので、
緊張しながら作成していますが、３日間よろしくお願いします！
(誤字・脱字がありましたらご指摘を頂けると助かります)

# 記事の内容について
**「え、なんでランゲーム？」**
こう思った人も多いかと思います。

何故なら私たちのAdvent Calendar 2018 のテーマは
「今年身に着けたプログラミング便利テクニック」
だからです！！

では何故ランゲームを作ろうかと思ったかというと――
<以下、脳内文>
自分が身に着けたことなんて皆さんは知っていて当たり前みたいなことばかりだろうし、
どんな記事書けばいいのか…。
　↓
12月かぁ…師走だからみんな忙しいんだろうなぁ…。
　↓
ん？師走？？走る？？？　あ、ランゲーム作りたい！

――はい、すいません、こんな感じです。

というわけで最近触る機会が多いUnreal Engine4を使って
ランゲームっぽいのを作っていきたいと思います。

# 作成物について
今回のランゲームでは、下記のゲームにある壁走りを中心としたゲームを作りたいと思っています。
■ Call of Duty: Black Ops III ・・・”フリーラン”というミニゲーム
※公式サイト：https://www.jp.playstation.com/scej/title/callofduty/blackops3/

ちなみにですが、今回作成していく内容は初心者向けの物となっていますので、
過度な期待は**禁物**です。

また、スタート画面やUI部分など、完全な作りこみをするものではなく、
ランゲームの土台部分を作る形になりますので、そういった部分は各自で作成をお願いします。

~~12月のクリスマスとか暇だし…暇だよね？~~

# 使用する環境
・windows
・Unreal Engine 4.21.0

# アジェンダ
1. プレイヤーを走らせる ・・・(本日の記事にて説明)
2. ステージを作る 　　　・・・(2日目の記事にて説明)
3. 壁走り機能を作る 　　・・・(2・3日目の記事にて説明)
4. 微調整 　　　　　　　・・・(3日目の記事にて説明)

# 1. プレイヤーを走らせる
### ●プロジェクトの作成
まずはプロジェクトを作っていきたいと思いますが、
今回UE4のテンプレートプロジェクトである、「ファーストパーソン」を
使っていくので、下記の画像のように選択して作成してください。
※スターターコンテンツの内容は今回使用しないので、無しでも有りでもどちらでも構いません。
![ProjectSelect.png](https://qiita-image-store.s3.amazonaws.com/0/311487/6d4705aa-758f-7d4a-690f-81c513740885.png)

### ●現状の確認
プロジェクトが立ち上がったら、とりあえずプレイしてみましょう。
ゲームをプレイするには、エディタ上部の「プレイ」ボタンを押下してください。

・移動：WASDキー
・マウス左クリック：銃の発射
・ジャンプ：SPACEキー

上記の操作が出来るかと思いますが、どうでしょうか？

テンプレートプロジェクトで基本的な動作が一通り実装されているので、
初めて触る方などは、この辺をどのように実装しているのかを確認するだけでもかなり勉強になるかと思いますので、
その辺は各自でお願いするとして、この記事では割愛します。

今回はここにダッシュ操作を追加してみたいと思います。

### ●ダッシュキーの設定
まずは、プレイヤーをダッシュさせるためのキー設定を行いたいと思います。
使用するキーは[左 Shift]を使います。
#### ・エディタ上部「設定」タブ ⇒ プロジェクト設定を選択
![ProjectSettings.png](https://qiita-image-store.s3.amazonaws.com/0/311487/911c33ce-186f-0af8-0d8f-57c5737dd4a4.png)
#### ・左記の大項目「エンジン」の『インプット』を選択
![Input.png](https://qiita-image-store.s3.amazonaws.com/0/311487/a9b09438-22ce-2a1c-ef9a-82d77dea6814.png)
#### ・「Bindings」の項目内にある『Action Mappings』の欄に"Run"イベントを追加し、[左 Shift]を設定
![KeySetting.png](https://qiita-image-store.s3.amazonaws.com/0/311487/6338bb68-cf71-b939-6e15-0d566f32c426.png)

### ●ダッシュの処理の追加
次に"Run"イベントが呼ばれた際に処理させる内容の実装をするため、下記のブループリントを触っていきます。
**・FirstPersonCharacter（/Game/FirstPersonBP/Blueprints/FirstPersonCharacter）**

**FirstPersonCharacter**は親クラスとして**Characterクラス**を継承しています。
そのため、**CharacterMovementCompornent**を所持しているため、こちらの内部パラメータをいじるだけで
簡単にダッシュの処理が実装できてしまいます。

#### ・FirstPersonCharacterのブループリントエディタを開き、画像のように処理を実装する
![Run_BP.png](https://qiita-image-store.s3.amazonaws.com/0/311487/735cd82d-1933-95cd-4415-ea108beabe46.png)

上記の画像が何をしているのかと言うと、
**FirstPersonCharacter**の移動に関するパラメータを**CharacterMovementCompornent**が所持しており、
その中の**MaxWalkSpeed**を変更することで、**キャラクターが歩行状態の際の速度**を変えています。

この他にも**CharacterMovementCompornent**はジャンプの際の加速度や、
泳ぎの際の速度、キャラクターにかかる重力などのパラメータを所持しており、つまるところ移動に関する設定値を管理しています。
※公式ドキュメント参照：http://api.unrealengine.com/JPN/Engine/Components/Movement/

### ●実装の確認
これでダッシュ処理が実装できましたので、「プレイ」ボタンを押下して確認してみましょう！

問題なければ、[左 Shift]を押している間だけ、移動スピードが速くなり、離せば通常のスピードになっているはずです。

# 最後に
本日はここまでとなります。

明日は簡単なステージの作成と壁走り機能を追加していきたいと思います。

ここまで見ていただきありがとうございました。
明日以降もどうかよろしくお願いします。