妹でもわかるUnrealEngine4

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

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

OpenAssetOrgのアセットで2Dゲームを作る⑩ キャラクターの向きはArrowComponentに合わせる

f:id:una_unagi:20170106235722p:plain

「そろそろ敵キャラを設置する。とりあえずはエルフのキャラクターと同じ人が作った王様の絵をあてる」

妹「王様が敵なんだ……」

「そのへんは後で変えるかもしれないけど。で、敵は右から左に進む左向きの絵が必要なんだけど、ブループリントでは自機と同じで右向きとして作る。あとあと角度とかを使う場合に、ちゃんと前を向いてないと面倒なことになるので」

妹「向きは気になってた。角度を調べるノードとかあるけど、そもそもの基準がズレてたら上手く調べられないんじゃないかと」

「キャラクターの向きについては、ArrowComponentが向いてる方向に合わせておくのが一番いい。この向きは、回転させるためのRotatorを全部0にした時の、基本の方向。この向きを正面として合わせておけば問題ない。3Dゲームの場合も同じ

f:id:una_unagi:20170107000541p:plain

「プレイヤーキャラもそうだし、矢も方向をあわせてある。ProjectileMovementComponentのRotationFollowVelocityを使って、物体の進行方向に合わせて回転させる場合も、最初に正面をあわせておかないとずれる」

妹「でも正面っていっても、これスプライトは正面向いてないよね? 正面を向かせるとこういう感じになるのでは?」

f:id:una_unagi:20170107001053p:plain

「あ、スプライト自体はカメラの方向を向かせるんだよ。スプライトに書いてある絵が向くだけで。そうしないとペラペラになっちゃうわけだから」

妹「うーん、なんとなくはわかるんだけど、自分が作った場合にそれは正しい角度なのか自信がもてない気がする……」

「間違ってたら角度がおかしなことになるから。ならなければ誰も気付かないというか……あとは回転が必要ないとか角度の計算が無理なゲームの場合は深く考えなくていい」

妹「でもこれをそのまま出すと左向きだから、右向かせなきゃいけないよね?」

「反転させる方法は、拡大縮小でXをマイナス1にする、回転でYaw(ヨー)を180にする、という2つの方法があるけど、矢みたいに回転させて向きを変える前提なら回転させる方法を使う。角度計算ノードは拡大縮小のことまで考えないから、結局逆を向いてしまう。角度だけで全部やる」

f:id:una_unagi:20170107002633p:plain

「ヨーを180に設定すると、エディタ上は-179.9999みたいになるけど、内部的にはちゃんと180になってるので気にしない。こうすると向きが反対になる。ただ手動でやると面倒だし間違うから、敵キャラのブループリント内で、BeginPlayとか使って初期角度を変えるのがいいと思う」