UnrealEngine奮闘記

アンリアルエンジンでの開発やTIPSをまとめたblogです

横スクロールアクションを作る その1青人間をユニティちゃんに差し替える(前編)

今回からTP_SideScrollerBPを元に横スクロールアクションゲームを作っていきます。

ただし、UE4標準アセットを使用するとプロジェクトを公開できませんので
「ユニティちゃん」をプレイヤーにしたゲームを作りたいと思います。

f:id:swiftnest:20140524175657j:plain
本コンテンツは、『ユニティちゃんライセンス条項』に基づいて公開・配布されるものです。本コンテンツをご利用される場合は、ユニティ・テクノロジーズ・ジャパン合同会社が定める『キャラクター利用のガイドライン』をお守りいただく必要があります。

今回は記事を前後編に分け、前編では一通りのアセットを用意します。
そして後半では青人間のアセットをユニティちゃんのアセットに差し替えていきます。

その後「キノコのような敵を踏んで倒すゲーム」「弾を撃って倒すゲーム」などを作っていく予定ですが、もし要望等あればコメントやFacebook等でお知らせ下さい。

f:id:swiftnest:20140527233422j:plain

前後編含めたプロジェクトファイルはこちらにアップしてあります。
https://github.com/swiftnest/UE4SideScrollerGame

プロジェクトを作成する

まずNow Projectから「TP_SideScrollerBP」を作成します。
プロジェクト名は「SideScroller」とします。

また、今回はUE4標準アセットが入らないように「Include Starter Content」のチェックを外してますが、普通はチェックを入れたほうが良いかと思います。

f:id:swiftnest:20140527212401j:plain:w460

こちらが出来たプロジェクトです。
Playを押すと青人間が主人公でジャンプアクションが遊べます。
キーボードの「A」「D」で左右移動、スペースでジャンプです。

f:id:swiftnest:20140527212433j:plain:w460

青人間(Hero_TPP)で使用しているアセットをチェック

画面左下のContent Browserを見ると青人間(Hero_TPP)は
以下のファイルで構成されているのが判ります。

ファイル名 種類
Animations/Idle AnimationSequence
Animations/Jump_End AnimationSequence
Animations/Jump_Loop AnimationSequence
Animations/Jump_Start AnimationSequence
Animations/Run AnimationSequence
Animations/Walk AnimationSequence
Blueprints/MyCharacter Blueprint
Character/HeroTPP SleletonMesh
Character/HeroTPP_AnimBlueprint AnimationBlueprint
Character/HeroTPP_Skeleton Skeleton
Character/IdleRun_TPP BlendSpace 1D

ユニティちゃんを使い、これらのアセットを作成していきます。

ユニティちゃんをインポートする

まずユニティちゃんのインポートとマテリアル設定ですが、以下のブログで既に紹介されていますので割愛します。
こちらを御覧ください

■Let's Enjoy Unreal Engine - UE4でゼロからユニティちゃんを表示させるまで
http://unrealengine.hatenablog.com/entry/2014/04/15/184432

またマテリアルに関しては次の記事で紹介されています。

■Let's Enjoy Unreal Engine - マテリアルを触って見た目を変えてみる
http://unrealengine.hatenablog.com/entry/2014/04/18/194114

なお、今回使用するのは以下のモーションファイルになります。

  • unitychan_JUMP00B.fbx
  • unitychan_RUN00_F.fbx
  • unitychan_WAIT00.fbx
  • unitychan_WALK00_F.fbx

また1フレーム目にTスタンスが入ってますので、インポートの際にはRangeに1-9999を指定します。
(まとめてではなく、1ファイルずつインポートして下さい。Rangeが不正になります。)

f:id:swiftnest:20140528001945j:plain

上記記事を参考にインポートと行うと以下のファイルが作成されますので、フォルダを作成して格納します。

ファイル名 種類
UnityChan/Animations/unitychan_JUMP00B AnimationSequence
UnityChan/Animations/unitychan_RUN00_F AnimationSequence
UnityChan/Animations/unitychan_WAIT00 AnimationSequence
UnityChan/Animations/unitychan_WALK00_F AnimationSequence
UnityChan/Character/unitychan SleletonMesh
UnityChan/Character/unitychan_Skeleton Skeleton
UnityChan/Character/Materials/body_01 Texture2D
UnityChan/Character/Materials/cheek_00 Texture2D
UnityChan/Character/Materials/eyeline_00 Texture2D
UnityChan/Character/Materials/eye_iris_L_00 Texture2D
UnityChan/Character/Materials/eye_iris_R_00 Texture2D
UnityChan/Character/Materials/face_00 Texture2D
UnityChan/Character/Materials/hair_01 Texture2D
UnityChan/Character/Materials/skin_01 Texture2D
UnityChan/Character/Materials/cheek_00_Mat Material
UnityChan/Character/Materials/body_01_Mat Material
UnityChan/Character/Materials/eyeline_00_Mat Material
UnityChan/Character/Materials/eye_iris_L_00_Mat Material
UnityChan/Character/Materials/eye_iris_R_00_Mat Material
UnityChan/Character/Materials/face_00_Mat Material
UnityChan/Character/Materials/hair_01_Mat Material
UnityChan/Character/Materials/skin_01_Mat Material

f:id:swiftnest:20140527212347j:plain:w460

私の環境では何故かユニティちゃんが寝ている状態でインポートされました。
(ユニティちゃんのアセットバージョンが1.1.1になったから?)
ちょっと不便ではありますが、後で修正できるので今回はこの状態で進めます。

上記を先の青人間のアセットと比較すると、以下のファイルが無いのが判るかと思います。

ファイル名 種類
Animations/Jump_End AnimationSequence
Animations/Jump_Loop AnimationSequence
Animations/Jump_Start AnimationSequence
Blueprints/MyCharacter Blueprint
Character/HeroTPP_AnimBlueprint AnimationBlueprint
Character/IdleRun_TPP BlendSpace 1D

まずはAnimationSequenceから用意していきます。

モーションを分割する(Animation Compositeで部分再生)

青人間ではジャンプモーションはStart、Loop、Endの3ファイルありますが、ユニティちゃんに含まれているジャンプモーションは全てまとめて1ファイルになってます。
そこでunitychan_JUMP00Bを3つに分割したいと思います。

方法は幾つかあり、先程と同じくインポートする際に読み込むフレーム範囲を指定して、それで3回に分けてインポートしても良いのですが、今回はAnimation Compositeを使いたいと思います。

公式ドキュメント(日本語)
https://docs.unrealengine.com/latest/JPN/Engine/Animation/AnimationComposite/index.html

まず左下Content Browser上の「unitychan_Skeleton」を右クリックし、「CreateAnimComposite」をクリックします。

f:id:swiftnest:20140527212942j:plain

すると「unitychan_Skeleton_Composite」というファイルが出来るので、「unitychan_Jump_Start」とリネームし、Animationsフォルダへ移動します。

次にunitychan_Jump_Startをダブルクリックし「Persona Animation Editor」を起動します。

起動したら、右下「AssetBrowser」から「unitychan_JUMP00B」を画面下のバーの部分へドロップ&ドラッグします。
後は右上のメニュー内のStartとEndに0.3と0.7を指定します。
これでアニメーションの部分再生が出来ました。

f:id:swiftnest:20140528004800j:plain:w460

これをモーション3つ分繰り返します。
unitychan_Jump_Start Start:0.3, End:0.7
unitychan_Jump_Loop Start:0.699, End:0.7
unitychan_Jump_End Start:0.7, End:1.841667

これでAnimationは揃いました。

待機、歩き、走りの遷移を作る(BlendSpace 1D)

次は「BlendSpace 1D」を作ります。
BlendSpace 1Dはモーションのブレンドを行うためのアセットで、青人間では「待機、歩き、走り」の遷移に使用されています。

試しに青人間の「IdleRun_TPP」ファイルを開いてみます。
真ん中のスライダーを上下にすると、モーションが待機から走りに遷移します。

f:id:swiftnest:20140527213530j:plain:w460

公式ドキュメント(日本語)
https://docs.unrealengine.com/latest/JPN/Engine/Animation/Blendspaces/index.html

では、実際に作成してみます。

まず先ほどと同じく左下「Content Browser」上の「unitychan_Skeleton」を右クリックし、今度は「CreateBrendSpace->Create 1D BlendSpace」をクリックします。

次にParametersの「X Axis Range」を青人間と同じく「0 - 375」と入力し「Apply Parameter Changes」を押します。
その後グラフの左、右、真ん中にそれぞれunitychan_JUMP00B、unitychan_RUN00_F、unitychan_WALK00_Fを以下の様に配置します。

f:id:swiftnest:20140528003628j:plain:w460

これでBlueprintとAnimationBlueprint以外の一通りのアセットが揃いました。

次回は難解な「AnimationBlueprint」の作成を行い、青人間のアセットをユニティちゃんに差し替えます。