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

妹でもわかるUnrealEngine4

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

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

Adding Hover Componentの動画で学習

妹「Component作るっぽい動画がいくつか見つけたんだけど、英語->日本語字幕ではさっぱりわからん。でも、やりたいことが出来そうな気配は漂ってた!」

「漂ってたんだ。じゃあとりあえずこの動画から見ていくことに」

docs.unrealengine.com

妹「ホバーするコンポーネントをつけると、浮くようになるらしい。ホバーするものってあんまり思いつかないけど」

エアホッケーのパックとかそんな感じかも。下からぶわって空気の力でちょっとだけ浮いてる。あんまり長いことやってると空気が切れて、全然飛ばなくなっちゃうんだけど」

妹「なぜそんな仕様に……」

「決着つけずにずっとラリーする人対策だね。台の独占とか電気代とか色々。まあ普通にやっててもそうなったのは短すぎだと思うけど」

f:id:una_unagi:20161019234524p:plain

「とりあえず動画のやつと同じブループリントを組んだ。バージョンとか日本語設定とかで見た目はちょっと違うけど。まずはコンポーネントのBeginPlayのところから。PrimitiveComponentが実際にホバーさせる対象で、それを全コンポーネントの中から探して、何回も探さずにすむように変数にSETしてる」

妹「PrimitiveComponentっていうのを使ってないと駄目なの?」

「それを継承したやつだったらなんでもいいはず。というか何かを表示する用のコンポーネントはだいたい継承してるはず。ただ2つ以上あった場合はどっちが使われるかわからないし、0個だと多分バグる」

妹「自分で変数にSETする方式だと2つあっても大丈夫なのでは?」

「手動で設定をするのはめんどくさい。あとアクターにくっつけてすぐ動く利便性がなくなるというのもある」

妹「くっつけて動くといえば、普通のアクターに後からコンポーネントだけひょいってくっつけてたんだよね。これが出来るんだったら、同じクラスでもコンポーネントあるやつとないやつと作れるから便利」

「それは確かに出来るね。ブループリントからでもコンポーネントを追加出来る」

f:id:una_unagi:20161019235446p:plain

「このコンポーネントは基本的にTickが重要。毎回地面までの距離を調べて、距離が一定以上近づくと浮き上がろうとする。まずその地面までの距離の判定をする」

妹「このへんはわかる」

f:id:una_unagi:20161019235653p:plain

「このへんで浮き上がるためのパワーを決定してる。地面に近づいたら大きな力で上に飛ばす、ちょっと近づいただけで強く弾くと浮きすぎるから加減してる。とは言ってもかなり上下に揺れが激しいんだけど」

妹「このへんは複雑」

「計算部分は別のノードで同じことをやれるパターンもいくつかあると思う。とりあえず上に弾き飛ばすというのが重要」

f:id:una_unagi:20161020000025p:plain

妹「ここが一番謎なんだよ。なんか揺れを抑える? 的な効果があるっぽいんだけど、どういう仕組みのノードなのかさっぱり」

「たしかによくわからないね。ただ数字を上げるとSetLinerDampingの方は上下の動きにくくなって、SetAngularDampingの方はぶつかった時に回転しにくくなってる感じ」

妹「動きにくいというのは……つまり……どういうこと?」

「物理設定に作用してるパラメータな気はするんだけど、重力とか重さとかを変えずに、物理の影響力だけを変えてる……のかなあ? これはちょっと自信ないやつだけど。影響しにくいから、上に強く弾いてもゆっくりしか動かないんだと思う。落下も遅くなってるかも」

妹「何かに使えそうなんだけど、意味不明すぎて使いにくい」

「ちなみに数字は00.01が何もしないのと同じで、これを1以上にしたり、マイナスにしたりも出来る。マイナスにすると、上下の動きが激しいどころか、空中に飛んでいって帰って来なかった」

妹「ホバーじゃなくて発射されてる……」