妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

SpriteStudioのデータをUE4で使う方法(当たり判定編)

妹「SpriteStudioには当たり判定っぽい機能があったんだけど、なんかこの表を見た感じだと、UE4のとこが☓になってる気がするんだけど……」

OPTPiX SpriteStudio 5 互換性の比較表 - Google スプレッドシート

「当たり判定機能は使えない。理由はよくわからないんだけど。コリジョンの仕組みとか違うからかも」

妹「そうすると、パンチに合わせてコリジョンを前に動かすみたいなことは出来ないのかな? アニメーションと別にブループリントで動かすことは出来そうな気もするけど」

「もちろんブループリントで動かしてもいいんだけど、SpriteStudioのUE4サンプルの中には武器をふるって攻撃してるものがあるから、そのやり方をパクった方が良さそう。プロジェクトを開いたら、コンテンツブラウザからMaps > Paper2DExampleというレベルを開く」

f:id:una_unagi:20151231180341p:plain

妹「あれ? SpriteStudioはPaper2D使ってなかったのでは?」

「使ってないけど、組み合わせて使う事は出来るから。Paper2Dの横スクロールプロジェクトにSpriteStudioのキャラクタを混ぜて動かすようなサンプルになってる。だから背景や足場はPaper2D」

f:id:una_unagi:20151231180404p:plain
f:id:una_unagi:20151231233358g:plain

「プレイヤーキャラに使われているのは、Blueprintフォルダの中のBP_SsPaperCharacter。PaperCharacterを継承してるけど、表示するSpriteは指定してないから、実際の表示はSsPlayerコンポーネントでやってる。そしてAttackCollisionというのがあるんだけど、これが武器(バット)の動きに合わせて動いている。これによって武器に当たった敵にだけダメージがいくようになってる」

妹「このコリジョンはどうやって作ってるの?」

「作り方としては普通の、どこにでもあるようなBoxCollision。ただコンストラクションスクリプトでアタッチしてる」

f:id:una_unagi:20151231181011p:plain

妹「アタッチ……どこかで聞いたことがあるような?」

「前にアイテムを手に持つ時にやったやつ。あの時はソケットをスプライト側で設定してたけど、SpriteStudioで作ったデータにもソケットが設定されてて、ちゃんとアニメーションに合わせて動くようになってる。だからコリジョンをアタッチするとアニメーションと当たり判定を連動させられるようになる」

妹「そうすると手のところにコリジョンをアタッチすればパンチも出来そうだ。でもソケットどうやって作るの? さっきのobject1っていうのはどこから出てきたの?」

「サンプルプロジェクトのはアセット化したデータしか入ってないけど、元のSpriteStudioデータを見るとわかる」

補助ツール・ライブラリ群・サンプルのダウンロード
www.webtech.co.jp
f:id:una_unagi:20151231183034p:plain

「公式サイトからダウンロード出来る"キャラクターアニメーションテンプレート"の中に入っている、character_template1.sspjが元のデータなんだけど、バットのパーツがobject1になってる。何も設定しなくても全部のパーツ用のソケットが自動的に出来てるみたいで、ソケット名をheadにすればコリジョンが頭にくっついて動く」

妹「じゃあ手でも足でも問題ないわけだ」

「問題があるとしたらコリジョンの回転。サンプルデータだと丁度よくバットに合わせて回転してるんだけど、元の角度を上手く合わせないといけない。元がずれてるとアニメーションしてもずれる。ただ元の角度で上手く合わせるのが難しそう。使うコリジョンはBoxじゃなくてSphereの方がいいかもしれない。球体ならどう回転しようが無視出来るから、位置だけ使って上手く判定出来るはず」