妹でもわかるUnrealEngine4

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

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

SkySphereの太陽を動的に動かす

f:id:una_unagi:20180509232932p:plain

妹「太陽を動かす実験をやってたんだけど、上手くいったところと、いってないところがあるんだよ」

f:id:una_unagi:20180509233044p:plain

f:id:una_unagi:20180509233057p:plain

妹「太陽を別の位置に動かすのはできた。最初なんか変だと思ったのは、どのライトを使うかの設定をしてなかったかららしい。あとライトの角度を変えた時にボタンを押さないといけないのも盲点だった」

「そんなボタンあったんだ」

妹「なんかあった。そこまではわかったんだけど、問題は次で……」

f:id:una_unagi:20180509233637g:plain

「太陽が沈むの?」

妹「沈むまではいいんだけど、本当は登ってこないとおかしいんだよ。でも真っ暗なままで止まっちゃう」

f:id:una_unagi:20180509233249p:plain

妹「角度を毎回ちょっとずつ足してるんだけど、なんか上手くいかなくて」

「あー……それか。なんというか、角度は足し算すると上手くいかないんだよ」

妹「もちろん360度は0度と一緒だから、そうなるようにしてあるけど」

「そういう話に近いんだけど、角度用の関数を使わないと、色々上手くいかないというか」

妹「でもエディタで数字を設定したらちゃんとなるんだけど」

f:id:una_unagi:20180509234657p:plain

「エディタ上はそうなってるけど、実際には別の数字になってる。実行直後にPrintStringで調べると、設定したのとは別の数字が出てくる」

f:id:una_unagi:20180509235152p:plain

「本当はP(ピッチ)が160で、他は0なんだけど、他の軸も合わせてグルっと回っちゃってる」

妹「なぜそんなことに……」

「向き自体は一緒だから。角度には違う数字だけど同じ向きを表してる状態がいっぱいあるから、色々むずかしいんだよ」

f:id:una_unagi:20180509235144p:plain

「ちなみにこれが元の状態。ここからピッチだけ変えてるのにああなった」

妹「うーん、でも数字が変わったとしても、そのまま回転させてくれれば問題ないような」

「多分90度超えたあたりのタイミングで逆転が発生してて、それ以降は逆方向に回転しちゃうんじゃないかな。その結果90未満になるとまた逆転してって、そこで1フレームごとに無限ループになってる気がする」

妹「えーっと、じゃあ360度を超えたらってしてるところを、90度で考え直せばいいのかな」

「それでもいいかもしれないけど、そこはひょっとしたら機種で違うかもしれないし。やっぱり角度を操作するためのノードを使った方がいいと思う」