読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

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

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

SpriteStudioのユーザーデータに変数を埋め込んでUE4で取り出す

2Dゲーム SpriteStudio ブループリント ノード解説 UE4.10

imoue.hatenablog.com

「この前の無限ループになってたやつ、やりたいこととしてはSpriteStudioのアニメに合わせてコリジョンをオン・オフしたかったんだよね?」

妹「そーだよ」

「だったらSpriteStudioのユーザーデータを使うといいのでは?」

妹「ユーザーデータ……っていうのは見かけたことあるけど、使いみちと使い方がわかってない」

「ここでいうユーザーデータっていうのはSpriteStudioの専用用語。UE4の用語でいうと、アクターに付けるタグに近い。色んな事を書きこめるけど、書いても何も影響があるわけじゃなく、Branchノードとかで分岐させる時に使う。どういうルールで書くかとか、分岐させるかとかは自由」

妹「コメントとは違うの?」

「使ってないタグはコメントとほとんど変わらないけど、コメントだとブループリントからGET出来ないから条件分岐に使えない」

f:id:una_unagi:20160318203134p:plain

「SpriteStudioのユーザーデータはキーフレームに設定する。パーツごとの位置関係とか拡大率とか設定するところで、一緒に設定することが出来る。ここで書き込んだユーザーデータが、OnSsUserDataイベントの時にGET出来る」

妹「なんでこれ数字とか文字とか色々あるの? たくさんあってめんどくさそう」

「それは使うやつだけでいい。究極的にはユーザーデータのところをオンにして、キーフレームを赤くするだけで、そこが再生された時にOnSsUserDataイベントは起こるから、それだけで足りることもある。フレームの番号とかパーツ名とかは標準でGET出来るし。ちなみにパーツ名が取得できるのは、同じフレームでも別にパーツのとこにユーザーデータがあれば、同じフレームで複数回イベントが起きるから、どのパーツのイベントか区別出来た方が便利だから」

妹「じゃあなぜそんなにたくさんのユーザーデータが……」

「例えばフレーム番号を条件にして分岐させると、アニメーションの内容が変わった時に対応しずらい。でもユーザーデータの数字が1の時っていう条件なら、アニメを変えても使えるし。当たり判定の範囲みたいなのは矩形(Rect)、どこか場所を示したい時は座標(Point)を使うのが普通だろうけど、でも別に矩形を単なる数字変数4つとして扱ってもいい。そのへんの使い方は自由」

妹「パンチ中にコリジョンを有効にするっていう場合だと、どうやるのがいいんだろう」

「SpriteStudioでコリジョンが切り替わるタイミングでユーザーデータを置いて、0なら無効、1なら有効っていう風にするとか」