見出し画像

初心者ゲームつくる:ボールが跳ね返る仕組み【UE4編】

前回の続きです。
なんとかボールを動かすことができました。今回はボールが壁にあたると跳ね返るということをやりたいと思います。

注意点としては、物理学をもちいた現象ではなく、壁に当たると跳ね返るという仕組みをつくるということです。それではいってみましょう。
最終的にはこういうノードを作成していく。

画像9

まずはどう考えるか?

壁にあたったることで何らかのイベントを発生させ
それまで進んでいた方向を変換すればよい。

難しいのは、都合よく変換してくれる関数があるか?
あるんですw。「mirror vector by normal」というノードを使うとそれができそうです。

mirror vector by normalを詳しく見てみる

ドキュメントはこう書かれてます。

Given a direction vector and a surface normal, returns the vector reflected across the surface normal. Produces a result like shining a laser at a mirror!

方向ベクトル と サーフェス法線 入力すると反射された数値を返してくれるという便利な関数です。

方向ベクトルは New Var0 ですね。
法線ってなんやねん。

Normalであり、ポリゴンが向いている向きになります。図ですと。

画像1

進行ベクトルは、「New Var0」で法線ベクトルが hit Nomal となる。

具体的にみてみましょ。

New Var 0 

画像2

画面右にすすめるイメージでこういう風に入力。

画像3

アクタにふれるとトリガーが動き
反射ベクトルを、上の方は数値を増加させるノードになります。

できました!

画像4

備考:

画像5

この部分について解説をしておく。わすれるので。
黄色の変数は 方向で緑にはスピードと考えると上のノードは、壁にあたった際に発生する。緑の数値を変化させているノードになります。

New Var1にはデフォルトで設定した数値が入っており、
それに対して50を足す、次にあるのは2つの数値の最小数値を投げるというノードなんだが、「MIN」といれるとでてきます。

意味的には何度跳ね返ってもこれを入れることで 300が最大スピードとして限界を固定できるということですね。ためしに、リミットを外してみた動画をみてみましょう。

設定を次のように変更しております。
New Var 0 

画像6

New Var 1

画像8

跳ね返るごとに加算していく数値 と 最大数値の設定

画像9

これをプレイしたのがこちら



この記事が気に入ったらサポートをしてみませんか?