UnrealEngine4で水中を表現することができるWaterVolumeについて書いていきたいと思います
UnrealEngineで水中を表現する方法
UnrealEngineで水中を表現する方法は色々なやり方があるとは思いますがとりあえず完成イメージとしてはこんな感じになります。水面はBasicCubeで作っています。これのcollisionをなくすことでメッシュ(アクター)を貫通することができます。
上記のような浴槽みたいなものをつくり、水中を表現するときに必要な材料は次のようになります。
- Geometory → GeometoryはGeometoryEditingModeの押しだし機能をつかい浴槽をつくる
- BasicCube → BasicCubeは水面を表現します。BasciCubeの厚さをうすめにして、水のマテリアルを貼り付けます
- PhysicsVolume → PhysicsVolumeは水中を表現するためには必ず必要になります。
UnrealEngineで実際に水中をつくる手順は以下のとおりです。
- Geometoryで浴槽をつくる
- Geometoryの大きさにあわせBasicメッシュを作成する
- 配置したメッシュの詳細パネルにいきCollisionPresetsの項目をNoCollisionに変更する。すると、プレイヤーがメッシュをとおると、メッシュを貫通できるようになる
- PhysicsVolumeを追加して、Geometoryのくぼみに合うような形で配置する。
- PhysicsVolumeの詳細パネルでWaterVolumeにチェックをつけるとVolume内に入ったとき、水中にいるような効果を得ることができる。
- 必要に応じてPostProcessVolumeを追加して水中にいるときは視界の色を変えるようなことも可能
少しつらつらとかきすぎた感はありますが、UnrealEngineで水中を表現する大事なポイントは、BasicメッシュでNoCollision(衝突なし)をえらぶことと、PhysicsVolumeが必要であるということだけです。
UEで水中をつくる動画
UnrealEngineで水中をつくる作業を動画にしました。よろしければご覧ください。
UEで水中を表現しようとしたときのトラブル1: キャラクターが沈まない
PhysicsVolumeで水中を表現しようとしたはいいけど、いざ水中にとびこもうとするとキャラクターが沈まず、途中でとまってしまうことがあります。これはfriction(水中摩擦)の値を大きくしすぎている可能性があります。frictionの値を減らすととりあえずキャラクターは水中にしずみます。
frictionの設定項目はPhysicsVolumeの詳細パネルでおこなうことができます。
UEで水中を表現しようとしたときのトラブル2: 水中でなぜかジャンプできない
PhysicsVolumeでWaterVolumeにチェックをつけると、PhysicsVolume内にキャラクターが入ったときに水中にいるような効果がえられるのですが、移動速度などはおそくなるものの、なぜかキャラクターがジャンプができなくなります。(スペースボタンをおしてもジャンプできなくなる)
こちらの解決方法を探していたのですが、解決方法をみつけることができませんでした。自分がつくっているプロジェクトでなにがおかしいところがあるのかと思い、プロジェクトを新規作成してデフォルトの状態でWaterVolumeをためしてみましたが、やはりWaterVolume内ではジャンプすることができませんでした。youtubeの動画をみるとWaterVolume内でジャンプできているものもあるので、解決方法はあるようですが、自分の力では実装できませんでした。
またなにかわかれば追記したいと思います。
コメント