Endless Runnner
確認バージョン
4.14.3
公式ドキュメント
Youtubeのチュートリアル動画を自動翻訳字幕を表示させる
1 - Introduction & Player Control
Projectの作成
項目 | 選択内容 |
---|---|
BP or C++ | ブループリント |
テンプレート | ThirdPerson |
ターゲット | デスクトップ/コンソール |
クオリティ | ハイエンド |
スターターコンテンツ有無 | スターターコンテンツ有り |
フォルダパス | 他のクラスが使用しないフォルダを選択する(ない場合は作成する) |
プロジェクト名 | EndlessRunner |
キャラクターセットアップ 1
ThirdPersonCharacterをRunCharacterに名前を変更
CameraBoomのSocket Offsetを変更
Z: 100
キャラクターセットアップ 2 A,Dで向きを変える
変数名 | 変数の型 |
---|---|
CanTurn | Boolean |
DesiredRotation | Rotator |
Inter Speedを10に設定
向きを変えるスピードが速くなる
向きを変えられるエリアに入ったら向きを変えられるようにする
向きを変更したら、向きを変えられないようにCanTurnにFalseを設定する
Trigger BoxのActor Hidden In Gameのチェックを外す
2 - Spawning the Course
BP_FloorTileを作成する
名前 | 親クラス |
---|---|
BP_FloorTile | Actor |
コンポーネントの追加
名前 | 追加するコンポーネント |
---|---|
Floor | Cube |
Floorの詳細を変更
Transform
項目 | X | Y | Z |
---|---|---|---|
ロケーション | 500.0 | 0.0 | 0.0 |
ローテーション | 0.0 | 0.0 | 0.0 |
スケール | 10.0 | 10.0 | 0.1 |
Materials
項目名 | 値 |
---|---|
Element0 | M_Brick_Clay_New |
FloorをDuplicateしてWall1,Wall2を作成
Wall1 Transform
項目 | X | Y | Z |
---|---|---|---|
ロケーション | 500.0 | -500.0 | 80.0 |
ローテーション | 0.0 | 0.0 | 0.0 |
スケール | 10.0 | 0.1 | 2.0 |
Wall2 Transform
項目 | X | Y | Z |
---|---|---|---|
ロケーション | 500.0 | 500.0 | 80.0 |
ローテーション | 0.0 | 0.0 | 0.0 |
スケール | 10.0 | 0.1 | 2.0 |
コンポーネントの追加
名前 | 追加するコンポーネント |
---|---|
AttachPoint | Arror |
Transform
項目 | X | Y | Z |
---|---|---|---|
ロケーション | 1000.0 | 0.0 | 0.0 |
ローテーション | 0.0 | 0.0 | 0.0 |
スケール | 1.0 | 1.0 | 1.0 |
Funcation:GetAttachTransformの作成
GetAttachTransform
Output
変数名 | 変数の型 |
---|---|
AttachTransform | Transform |
新規レベルの作成
RunGameModeの編集 1
ThirdPersonGameModeをRunGameModeにリネーム
RunGameModeを開く
Open Full Blueprint Editorをクリック
AddFloorTileの作成
変数名 | 変数の型 |
---|---|
NextSpawnPoint | Transform |
BeginPlayを実装
開始時にAddFloorTileを呼び出す
WorldSettingsのGameModeを変更する
GameMode
項目名 | 値 |
---|---|
GameModeOverride | RunGameMode |
初期に配置されているFloorオブジェクトを削除する
Slimulateで実行する
BP_FloorTileを連結するように修正する
BP_FloorTile:AddFloorTileの変更
BeginePlayの処理を変更する
プレイして確認する
BP_FloorTileを通り過ぎたら消す
BP_FloorTileにEndTriggerを追加する
名前 | 追加するコンポーネント |
---|---|
EndTrigger | Box Collision |
EndTriggerの詳細を編集する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1000.0 | 0.0 | 190.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
Shape:Box Exient
項目 | X | Y | Z |
---|---|---|---|
Location | 32.0 | 500.0 | 200.0 |
Collision
項目名 | 値 |
---|---|
Collision Presets | OverlapOnlyPawn |
EndTriggerのOn Component Begin Overlapを編集する
On Component Begin Overlapを追加する
プレイして確認する
プレイ中にカメラを話して確認する方法
ゲーム中に視点を切り替えてオブジェクトの状況を確認する
3 - Creating Obstacles
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 |
Function:SetSpawnPointsを作成する
変数SpawnPointsの追加
変数名 | 変数の型 |
---|---|
SpawnPoints | Transform(配列) |
Function:SpawnBlockerを作成する
Addd Child Actor ComponentノードのChild Actor Classを[BP_Blocker]に設定する
Construction Scriptを編集する
Simulationボタンを押すとランダムにRockが配置されることが確認することが出来る
プレイするとランダムにRockが配置されることを確認することが出来る
キャラクターのスピードが遅いので、Max Walk Speedの数値を大きくする
1. RunCharacterを開く
2. CharacterMovement(Inherited)を選択する
3. Max Walk Speedを1500に変更する
SP_Blokerに衝突するようにSM_RockにCollisionを作成する
ApplyをクリックするとMeshの形状に近いCollisionが作成される
プレイするとRockにぶつかるとキャラクターが止まるようになる
SP_Blokerに衝突したら爆発するようにする
RunCharacterにCustomEvent: Deathを追加する
RunCharacterを開き、CustomEventを追加する
CustomEventの名前をDeathに設定する
BP_BlockerのRockにOn Component Hitを追加する
Rockを選択して、On Component Hitを追加する
プレイしてBP_Blockerに衝突すると、爆発する
ただし、爆発し続けてしまう
一度だけ爆発するように修正する
変数を追加する
変数名 | 変数の型 |
---|---|
IsDead | Boolean |
Deathイベントが発生したらIsDeadをTrueに設定する
前に移動する処理にDeathイベントが発生した際に前に進まないように判定文を追加する
リスタートを実装する
プレイして確認する
BP_Blockerに衝突後、最初から再開する
4 - Adding Pickup Items
BP_Itemを作成する
BP_Itemを作成する
名前 | 親クラス |
---|---|
BP_Item | Actor |
コンポーネントを追加する
名前 | 追加するコンポーネント |
---|---|
Coin | Static Mesh |
PointLight | Point Light |
RotatingMovement | Rotating Movement |
Coinの詳細を設定する
Static Mesh: Static Mesh
項目名 | 値 |
---|---|
Static Mesh | Shape_Torus |
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 0.0 | 14.0 | 0.0 |
Rotation | -90.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
Materials
項目名 | 値 |
---|---|
Elements 0 | M_Material_Gold |
PointLightの詳細を設定する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 0.0 | 0.0 | -60.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
Light
項目名 | 値 |
---|---|
Intensity | 2000 |
SimulationボタンをクリックするとRingが回転する
BP_FloorTileにBP_Itemを発生するエリアを作成する
コンポーネントを追加する
名前 | 追加するコンポーネント |
---|---|
CoinArea | Box Collision |
CoinAreaの詳細を設定する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 500.0 | 0.0 | 85.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
Shape
項目 | X | Y | Z |
---|---|---|---|
Box Extent | 460.0 | 460.0 | 2.0 |
Function:SpawnCoinsを追加する
Add Child Actor ComponentのChild Actor ClassにBP_Itemを設定する
Construction Scriptを編集する
ViewPortでSimulationボタンをクリックするとBP_ItemがCoinAreaのどこかに発生する
BP_Itemを複数個発生するようにSpawnCoinを修正する
ViewPortでSimulationボタンをクリックするとBP_Itemが6つCoinAreaのどこかに発生する
BP_ItemかBP_Blockerが発生するようにConstruction Scriptを修正する
ランダムでSpawnBlockerかSpownCoinsが呼ばれるように修正する
SimulationをクリックしてランダムにBP_BlockerかBP_Itemが発生することを確認する
取得したBP_Itemの合計を保持するように修正する
RunCharacterを修正する
変数を追加する
変数名 | 変数の型 |
---|---|
TotalCoins | Integer |
Funcion:AddCoinを追加する
BP_Itemを修正する
コインを取得した時の音をインポートする
コインの取得音をダウンロードする
https://1drv.ms/u/s!AsyaT0uIFWqQgY5DvES-sWbYrlJXUA
Audioフォルダを作成して、ダウンロードしたcoin_get.wavをインポートする
Sound_Cueを作成する
CoinのCollisionを修正し、On Component Begin Overlapを追加する
取得したBP_Itemの合計を表示するように修正する
WidgetBlueprint: RunHUDを作成する
UMGフォルダを作成する
WidgetBlueprintを作成する
名前はRunHUDに設定する
RunGameModeのBeginPlayを修正する
5 - Varying the Course
BP_FloorTileのChild Blueprint Class:BP_FloorTile_RampUpを作成する
BP_FloorTileを右クリック
Create Child Blueprint Classを選択し、Child Classを作成する
StaticMesh:Rampを追加する
名前 | 追加するコンポーネント |
---|---|
Ramp | Static Mesh |
Rampの詳細を設定する
Static Mesh: Static Mesh
項目名 | 値 |
---|---|
Static Mesh | Shape_Wedge_B |
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1250.0 | 0.0 | 0.0 |
Rotation | 0.0 | 0.0 | 180.0 |
Scale | 5.0 | 10.0 | 3.0 |
Materials
項目名 | 値 |
---|---|
Elements 0 | M_Tech_Hex_Tile_Pulse |
AttachPointの位置をRampの上部中央に移動する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1500.0 | 0.0 | 280.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
EndTriggerの位置をRampの上部中央に移動する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1500.0 | 0.0 | 475.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
RunGameModeのAddFloorTileをBP_FloorTileかBP_FloorTile_RampUpのいずれかを追加するように変更する
変数:FloorTilesを追加する
変数名 | 変数の型 |
---|---|
FloorTiles | Actor(Class)(配列) |
コンパイル -> 保存 -> Class Default
FloorTiles
インデックス | 値 |
---|---|
0 | BP_FloorTile |
1 | BP_FloorTile_RampUp |
BP_FloorTile_RampDownを作成する
BP_FloorTile_RampUpからDuplicate(複製)してBP_FloorTile_RampDownを作成する
BP_FloorTile_RampUpをDuplicateする
Rampを下り坂になるように移動する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1250.0 | 0.0 | -300.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
AttachPointを下り坂の終わりに移動する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1500.0 | 0.0 | -300.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
EndTriggerを下り坂の終わりに移動する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1500.0 | 0.0 | -135.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 1.0 | 1.0 | 1.0 |
RunGameModeのFloorTilesにBP_FloorTile_RampDownを追加する。
FloorTiles
インデックス | 値 |
---|---|
0 | BP_FloorTile |
1 | BP_FloorTile_RampUp |
2 | BP_FloorTile_RampDown |
プレイして確認する
6 - Turning Corners
BP_FloorTile_RightCornerを作成する
BP_FloorTileからChild Blueprint Classを作成する
名前をBP_FloorTile_RightCornerに設定する
Parent:Construction Scriptを呼ばないようにする
Wall2を修正する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 1000.0 | 0.0 | 80.0 |
Rotation | 0.0 | 0.0 | -90.0 |
Scale | 10.0 | 0.1 | 2.0 |
EndTriggerを修正する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 500.0 | 500.0 | 190.0 |
Rotation | 0.0 | 0.0 | 90.0 |
Scale | 1.0 | 1.0 | 1.0 |
AttachPointを修正する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 500.0 | 500.0 | 190.0 |
Rotation | 0.0 | 0.0 | 90.0 |
Scale | 1.0 | 1.0 | 1.0 |
TurnZoneを追加する
名前 | 追加するコンポーネント |
---|---|
TurnZone | Box Collision |
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 500.0 | 0 | 110.0 |
Rotation | 0.0 | 0.0 | 90.0 |
Scale | 1.0 | 1.0 | 1.0 |
Shape
項目 | X | Y | Z |
---|---|---|---|
Box Extent | 480.0 | 480 | 64.0 |
Collision
項目名 | 値 |
---|---|
Collision Presets | OverlapOnlyPawn |
On Component Begin Overlapを追加する
BP_FloorTile_LeftCornerを作成する
BP_FloorTile_RightCornerからBP_FloorTile_LeftCornerを複製する
BP_FloorTile_LeftCornerをDuplicateする
名前をBP_FloorTile_LeftCornerに設定する
Wall1を修正する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 500.0 | 500.0 | 80.0 |
Rotation | 0.0 | 0.0 | 0.0 |
Scale | 10.0 | 0.1 | 2.0 |
EndTriggerを修正する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 500.0 | -500.0 | 190.0 |
Rotation | 0.0 | 0.0 | 90.0 |
Scale | 1.0 | 1.0 | 1.0 |
AttachPointを修正する
Transform
項目 | X | Y | Z |
---|---|---|---|
Location | 500.0 | -500.0 | 190.0 |
Rotation | 0.0 | 0.0 | 90.0 |
Scale | 1.0 | 1.0 | 1.0 |
RunGameModeを直線系、コーナー系の生成をするように修正する
Function:AddFloorCurveを作成する
AddFloorTileをDuplicateする
変数:CurrentStraightを追加する
変数名 | 変数の型 | デフォルト値 |
---|---|---|
CurrentStraight | Integer | 0 |
StraightMax | Integer | 7 |
AddFloorTileを修正する
直線を作成するごとにCurrentStraightをインクリメントし、
CurrentStraightがStraightMaxの最大値を越えたら、AddFloorCurveを呼びだすように修正する
AddFloorCurveを修正する
ClassDefault FloorCurvesの初期値を設定する
ClassDefaultをクリックし、FloorCurvesにコーナー系ブループリントを追加する
FloorCurves
インデックス | 値 |
---|---|
0 | BP_FloorTile_LeftCorner |
1 | BP_FloorTile_RightCorner |
プレイして確認する
コーナーで行き詰ってしまったら身動きが取れなくなる
7 - Wrap Upで行き詰まりの際にキャラクターが死ぬように修正する
7 - Wrap Up
BP_FloorTileのWall1,Wall2に衝突したら死ぬように修正する
BP_FloorTileのWall1にOn Component Hitを追加する
BP_FloorTileを開き
Wall1にOnComponentHitを追加する
処理を実装する
動画ではNearlEqualのBの値が-1になっているが、1を設定する