Adding Hover Componentの動画で学習
妹「Component作るっぽい動画がいくつか見つけたんだけど、英語->日本語字幕ではさっぱりわからん。でも、やりたいことが出来そうな気配は漂ってた!」
「漂ってたんだ。じゃあとりあえずこの動画から見ていくことに」
妹「ホバーするコンポーネントをつけると、浮くようになるらしい。ホバーするものってあんまり思いつかないけど」
「エアホッケーのパックとかそんな感じかも。下からぶわって空気の力でちょっとだけ浮いてる。あんまり長いことやってると空気が切れて、全然飛ばなくなっちゃうんだけど」
妹「なぜそんな仕様に……」
「決着つけずにずっとラリーする人対策だね。台の独占とか電気代とか色々。まあ普通にやっててもそうなったのは短すぎだと思うけど」
「とりあえず動画のやつと同じブループリントを組んだ。バージョンとか日本語設定とかで見た目はちょっと違うけど。まずはコンポーネントのBeginPlayのところから。PrimitiveComponentが実際にホバーさせる対象で、それを全コンポーネントの中から探して、何回も探さずにすむように変数にSETしてる」
妹「PrimitiveComponentっていうのを使ってないと駄目なの?」
「それを継承したやつだったらなんでもいいはず。というか何かを表示する用のコンポーネントはだいたい継承してるはず。ただ2つ以上あった場合はどっちが使われるかわからないし、0個だと多分バグる」
妹「自分で変数にSETする方式だと2つあっても大丈夫なのでは?」
「手動で設定をするのはめんどくさい。あとアクターにくっつけてすぐ動く利便性がなくなるというのもある」
妹「くっつけて動くといえば、普通のアクターに後からコンポーネントだけひょいってくっつけてたんだよね。これが出来るんだったら、同じクラスでもコンポーネントあるやつとないやつと作れるから便利」
「それは確かに出来るね。ブループリントからでもコンポーネントを追加出来る」
「このコンポーネントは基本的にTickが重要。毎回地面までの距離を調べて、距離が一定以上近づくと浮き上がろうとする。まずその地面までの距離の判定をする」
妹「このへんはわかる」
「このへんで浮き上がるためのパワーを決定してる。地面に近づいたら大きな力で上に飛ばす、ちょっと近づいただけで強く弾くと浮きすぎるから加減してる。とは言ってもかなり上下に揺れが激しいんだけど」
妹「このへんは複雑」
「計算部分は別のノードで同じことをやれるパターンもいくつかあると思う。とりあえず上に弾き飛ばすというのが重要」
妹「ここが一番謎なんだよ。なんか揺れを抑える? 的な効果があるっぽいんだけど、どういう仕組みのノードなのかさっぱり」
「たしかによくわからないね。ただ数字を上げるとSetLinerDampingの方は上下の動きにくくなって、SetAngularDampingの方はぶつかった時に回転しにくくなってる感じ」
妹「動きにくいというのは……つまり……どういうこと?」
「物理設定に作用してるパラメータな気はするんだけど、重力とか重さとかを変えずに、物理の影響力だけを変えてる……のかなあ? これはちょっと自信ないやつだけど。影響しにくいから、上に強く弾いてもゆっくりしか動かないんだと思う。落下も遅くなってるかも」
妹「何かに使えそうなんだけど、意味不明すぎて使いにくい」
「ちなみに数字は00.01が何もしないのと同じで、これを1以上にしたり、マイナスにしたりも出来る。マイナスにすると、上下の動きが激しいどころか、空中に飛んでいって帰って来なかった」
妹「ホバーじゃなくて発射されてる……」