Unityで簡単に水面を作る方法を解説していきます。後半には水の中で視界を青くする方法なども解説するので海や池を作るという人はぜひ参考にしてください。
※この記事ではスタンダートアセットというものを使いますが、スタンダートアセットは現在(2024年8月13日)使用できないのでこちらの記事を参考にしてください。
目次
水面を作る
水の中に入ると視界を青くする
水中でも水面を映す
水面を作る
早速水面の作り方を解説していきましょう。解説には下の画像を使っていきます。
また、解説には「スタンダートアセット」を使用しています。スタンダートアセットをダウンロードしていない場合はこちらにやり方が書いてあるのでダウンロードしてください。
スタンダートアセットをダウンロードしたらプロジェクトの検索欄に「WaterProDaytime」と入力します(画像1番目の赤丸)。
そこで表示されるアセットの中に「WaterProDaytime」という名前のオブジェクトをヒエラルキーに追加します(画像2番目の赤丸)。シーンに水面のオブジェクトが表示されればOKです(画像3番目の赤丸)。
水面の大きさ、位置を変更して池、海を作りたい場所に移動させます。
これで海、池が完成しましたね。
水の中に入ると視界を青くする
水面はできましたがこのままだと水の中に入ると中が空っぽになります。
ゲームによっては水の中を移動するタイプもあるでしょうし、水の中に入った時に水の中っぽくなるようにしていきましょう。
まずはヒエラルキーで「Cube」を作り(画像1番目の赤丸)、タグを追加して「Water」とします(画像2番目の赤丸)。
大きさと位置を変更して池や海の下に表示させます(画像3番目の赤丸)。
「Mesh Renderer」のチェックを外してオブジェクトを透明にします(画像4番目の赤丸)。
「Box Collider」の「トリガーにする」の項目にチェックをつけてCubeの当たり判定を外します(画像5番目の赤丸)。
このcubeの中にいる間だけ視界を変化するようにしていきます。
操作キャラクターのカメラをクリックして右下の「コンポーネントを追加」をクリックします。
検索欄に「Capsule Collider」と入力して同じ名前のコンポーネントをクリックします。
すると画像の1番目の赤丸の部分が追加されます。
ここでも「トリガーにする」の項目にチェックをつけておきましょう。
次にヒエラルキー→UI→画像とクリックしていきます。
するとCanvasというゲームオブジェクトが追加され、その中にimageが生成されます(画像1番目の赤丸)。
imageは画像で、ゲーム画面に画像が表示されるので大きさを変えて画面全体に表示されるようにする(画像2番目の赤丸)。
色を変更して半透明の青色にします(画像3番目の赤丸)。最後に画面右上のインスペクターの真下のチェックを外します(画像4番目の赤丸)。
最終的に画像のオブジェクトが非表示になればOKです。
色を半透明にする場合は画像赤丸の部分を調整すればOKです。
画像はできたので今の画像を水の中に入った時に表示されるようにしていきます。赤丸の+マークをクリックしてください。
表示される項目から「C#スクリプト」をクリックします。スクリプトの名前を決めることができるので名前を「watercamera」にします。
スクリプトの中は以下のコードをコピー&ペーストしてください。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEditor;
public class watercamera : MonoBehaviour
{
public GameObject water;
void OnTriggerEnter(Collider t)
{
if (t.CompareTag("water"))
{
water.SetActive(true);
}
}
void OnTriggerExit(Collider t)
{
if (t.CompareTag("water"))
{
water.SetActive(false);
}
}
}
スクリプトができたらプレイヤー視点のカメラにスクリプトを入れます(画像1番目の赤丸)。
するとスクリプトが右側に表示されて「水」という項目が出来ているのでそこに非表示にした画像を入れます。
これで水の中に入ると画面全体が青くなり、水の中っぽくなります。
水中でも水面を映す
水の上だと水面が見えますが、水の中だと水面が見えないのでどこから水の上かわかりません、なので水の中でも水面が映るようにしていきます。
「WaterProDaytime」(水面のオブジェクト)を左クリックして「複製」をクリックします。
複製したオブジェクトのZ軸を180度回転させます。
これで水の中でも水面が見えるようになりました。
コメントを残す