Endless Runner 3 - Creating Obstacles

# Endless Runner
## 3 - Creating Obstacles
[![3 - Creating Obstacles](http://img.youtube.com/vi/qzFd-PfM5kc/0.jpg)](https://www.youtube.com/watch?v=qzFd-PfM5kc)


### BP_Blockerを作成する

BP_Blockerを作成する

|名前  |親クラス  |
|---|---|
|BP_Blocker |Actor |


ブロック用の岩のStaticMeshを追加する

|名前  |追加するコンポーネント  |
|---|---|
|Rock |StaticMesh |

Rockの詳細を設定する

Static Mesh: Static Mesh
 
|項目名  |値  |
|---|---|
|Static Mesh |M_Rock |


### BP_FloorTileを編集する

#### SpawnPointL,SpawnPointC,SpawnPointRの追加

|名前  |追加するコンポーネント  |
|---|---|
|SpawnPointL |Arrow |
|SpawnPointC |Arrow |
|SpawnPointR |Arrow |


SpawnPointL Transform

|項目  |X  |Y  |Z  |
|---|---|---|---|
|Location  |890.0  |-290.0  |30.0  |
|Rotation  |0.0  |0.0 |0.0 |
|Scale  |1.0  |1.0  |1.0  |

SpawnPointC Transform

|項目  |X  |Y  |Z  |
|---|---|---|---|
|Location  |890.0  |0.0  |30.0  |
|Rotation  |0.0  |0.0 |0.0 |
|Scale  |1.0  |1.0  |1.0  |

SpawnPointR Transform

|項目  |X  |Y  |Z  |
|---|---|---|---|
|Location  |890.0  |290.0  |30.0  |
|Rotation  |0.0  |0.0 |0.0 |
|Scale  |1.0  |1.0  |1.0  |

![image](https://qiita-image-store.s3.amazonaws.com/0/111261/7786d7f8-a085-62d7-5b3c-6f882742d9a6.png)

#### Function:SetSpawnPointsを作成する
![BP_FloorTile_ 2018_10_31 14_45_07.png](https://qiita-image-store.s3.amazonaws.com/0/111261/670393f6-0532-ad2b-d486-8256f03897b6.png)


変数SpawnPointsの追加

|変数名  |変数の型  |
|---|---|
|SpawnPoints |Transform(配列) |

#### Function:SetSpawnPointを作成する
![BP_FloorTile_ 2018_10_31 14_45_07.png](https://qiita-image-store.s3.amazonaws.com/0/111261/3b9aed98-6e88-adc7-26ff-61814df74679.png)



#### Function:SpawnBlockerを作成する

![image](https://qiita-image-store.s3.amazonaws.com/0/111261/abb08627-85ea-71f4-5809-cf9dba66718d.png)

Addd Child Actor ComponentノードのChild Actor Classを[BP_Blocker]に設定する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/406b6389-90e5-f450-3cda-e5ffd7052150.png)

処理の実装
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/ba2f3aa5-805f-e30f-6f87-e7715676e1a9.png)

#### Construction Scriptを編集する

処理の実装
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/c995317d-031d-6f2c-f721-0b43d79ccf50.png)

Simulationボタンを押すとランダムにRockが配置されることが確認することが出来る
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/3ca13126-ac46-c6ef-aa0f-de587c18723f.png)

プレイするとランダムにRockが配置されることを確認することが出来る
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/5e599a6e-d25d-b2e3-3a33-905cf80074bc.png)

キャラクターのスピードが遅いので、Max Walk Speedの数値を大きくする
1. RunCharacterを開く
2. CharacterMovement(Inherited)を選択する
3. Max Walk Speedを1500に変更する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/21bb45c0-b49e-70eb-1890-5d3722e3baf1.png)

### SP_Blokerに衝突するようにSM_RockにCollisionを作成する

BP_FoorTileを開いてSM_Rockを開く
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/8d6e8e63-ab9c-1eae-343c-f1276b61e68d.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/111261/82c42046-c1da-a8c4-d7ab-c889f83c0168.png)

ApplyをクリックするとMeshの形状に近いCollisionが作成される
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/1972692f-e8fa-c559-0b9b-d38dcbe7d655.png)

Save
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/0a5aa917-ffc7-7051-1a32-5b01206ef84d.png)

プレイするとRockにぶつかるとキャラクターが止まるようになる
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/0f2ac720-1823-2440-2383-852b836d19d1.png)

### SP_Blokerに衝突したら爆発するようにする

#### RunCharacterにCustomEvent: Deathを追加する
RunCharacterを開き、CustomEventを追加する
CustomEventの名前をDeathに設定する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/26b0b1f0-eb0b-2d4c-0daa-e6dace76b18f.png)

処理を実装する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/11cf2441-6b6e-1150-5954-48d15403b3a8.png)

#### BP_BlockerのRockにOn Component Hitを追加する

Rockを選択して、On Component Hitを追加する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/b6df6667-a60f-1145-5bca-ab570c825663.png)

処理を実装する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/56e80a82-318e-efbb-6728-ae579561d627.png)

プレイしてBP_Blockerに衝突すると、爆発する
ただし、爆発し続けてしまう
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/8d3feb56-2058-86d5-0e00-c87725a9f243.png)

#### 一度だけ爆発するように修正する

変数を追加する

|変数名  |変数の型  |
|---|---|
|IsDead |Boolean |

Deathイベントが発生したらIsDeadをTrueに設定する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/81ae11d6-2f60-dc5a-497b-b1c8612c9774.png)

前に移動する処理にDeathイベントが発生した際に前に進まないように判定文を追加する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/de6a1c71-f7c5-4258-5507-ac2b5efd43c0.png)

プレイして確認する
1度しか爆発しない
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/f4202ae4-1cac-b54c-88d6-0dc4a7910b8e.png)

#### リスタートを実装する

Deathイベントの末尾にリスタート処理を実装する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/641059f1-b8f9-32e5-f661-2c33abe55e6e.png)

プレイして確認する
BP_Blockerに衝突後、最初から再開する

![image](https://qiita-image-store.s3.amazonaws.com/0/111261/3ee3a5a9-fc7c-6757-dfc8-2b30365e1159.png)