UE4 地面の傾きに合わせてキャラクターを傾ける
設置している地面の傾きに合わせてキャラクターを傾ける方法です。
こちらを参考にさせていただきました!
・【UE4】なるべく手軽に壁走りを実装してみる
http://tamfoi.hatenablog.com/entry/advent-calendar-2017-ue4
上記のサイトで書かれている方法以外にやり方はなさそうですね。
手順としては
①自分の真下に向かってレイ判定を行う
②レイが地面に当たっていれば、その地面の法線を取得する
③取得した法線を元にキャラクターを回転させる
といったものですね。
ノードで組むとこんな感じに(参考サイトに書かれているそのままです)

キャラクターの上ベクトルを取得して、マイナスを掛けて下方向の位置を算出。
キャラクターの位置から下方向の位置に向かってレイを飛ばす。
レイがヒットしていたら、ヒットしたポリゴンの法線から回転値を算出。
算出した回転値をキャラクターにセット。
という流れですね。簡単!
これは参考サイトをそのままなので、地面に設置しているかの判定は取っていないので
設置しているかどうかは「Distance」を見て判断するとよさそうです。
とりあえず動かしてみるとこんな感じに。


地面かどうかとして法線の向きとかで判定したほうがよいかもですね。
いまだと画像のように横向きのポリゴンでも判定されちゃうので。
しかし、こういうのが簡単にできるのはエンジンのいいところですね!
こちらを参考にさせていただきました!
・【UE4】なるべく手軽に壁走りを実装してみる
http://tamfoi.hatenablog.com/entry/advent-calendar-2017-ue4
上記のサイトで書かれている方法以外にやり方はなさそうですね。
手順としては
①自分の真下に向かってレイ判定を行う
②レイが地面に当たっていれば、その地面の法線を取得する
③取得した法線を元にキャラクターを回転させる
といったものですね。
ノードで組むとこんな感じに(参考サイトに書かれているそのままです)

キャラクターの上ベクトルを取得して、マイナスを掛けて下方向の位置を算出。
キャラクターの位置から下方向の位置に向かってレイを飛ばす。
レイがヒットしていたら、ヒットしたポリゴンの法線から回転値を算出。
算出した回転値をキャラクターにセット。
という流れですね。簡単!
これは参考サイトをそのままなので、地面に設置しているかの判定は取っていないので
設置しているかどうかは「Distance」を見て判断するとよさそうです。
とりあえず動かしてみるとこんな感じに。


地面かどうかとして法線の向きとかで判定したほうがよいかもですね。
いまだと画像のように横向きのポリゴンでも判定されちゃうので。
しかし、こういうのが簡単にできるのはエンジンのいいところですね!
| UE4 | 15:13 | comments:0 | trackbacks:0 | TOP↑