Unityアセット 水の球を操る
今回は、Unityのバージョン2021.3.33f1のURP(WebGL)で作成していきます。
まず、「Water RPG Spell Pack (41 VFX)」のアセットをUnityにインポートします。
「Assets\Piloto Studio\Elemental VFX Mega Bundle\Water Spells Bundle」 にある
「VFX_WaterGuard」をHierarchyウインドウにドロップします。
以下のサイトから、Shaderをダウンロードして、該当のShaderを適用すれば直るとのことです。
https://assetstore.unity.com/packages/vfx/shaders/piloto-studio-shaders-258376
「VFX_WaterGuard」のscaleをXYZ全て「1」から「0.05」にします。
これだけでは、実行時のアニメーションで既定の「1.2」のサイズに戻されてしまいますので、「Animator」の「Remove Component」で今回はアニメーションを無効にします。
【masterObj.cs】
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WaterController001 : MonoBehaviour { public GameObject masterObj; float initialDistanceF; float initialHeight; Vector3 distance3; void Start() { //初期の水球と3DキャラクターのZ軸(forward)の距離を定義 initialDistanceF = 1.0f; //初期の水球の高さを定義 initialHeight = 0.8f; distance3 = new Vector3(0, initialHeight, initialDistanceF); } void Update() { var masterObjPoji = masterObj.transform.position; //水球の高さは、masterObjPojiに加算するdistance3の値のままとするため、 //masterObjPojiの高さは、0に調整 masterObjPoji.y = 0f; //3Dキャラクターの位置にdistance3を足し、水球の位置を設定 transform.position = masterObjPoji + distance3; //RotateAround関数は、第一引数(masterObjPoji)から現在の自分の位置までの距離を //半径として、第二引数の軸を第三引数の値のスピードで移動させる。 transform.RotateAround(masterObjPoji,new Vector3(0, 1.0f, 0), 0.5f); //自分(水球)の位置から3Dキャラクターの位置の現在の差を //新たな距離(distance3)として設定して続ける distance3 = transform.position - masterObjPoji; } }
上のスクリプトを「VFX_WaterGuard」にアタッチします。
また、publicとしている「masterObj」に、旋回の中心としたい3Dキャラクターを指定します。
少し解説を✨
旋回にはRotateAround関数を使用しています。
【Unity 公式ドキュメント】
【masterObj.cs(抜粋)】
transform.RotateAround(masterObjPoji,new Vector3(0, 1.0f, 0), 0.5f);
【※Vector3(1.0f, 0, 0)の場合】
【※Vector3(0, 0, 1.0f)の場合】
【※Vector3(1.0f, 1.0f, 0)の場合】
【※Vector3(1.0f, 1.0f, 1.0f)の場合】
【※Vector3(0.3f, 1.0f, 0)の場合】
泡沫を大きくするため、scaleのXYZの値を「2」に変更します。
それではBubble(Material)の設定を変更して、もっと目立たせるようにしましょう。
「Fresnel」にチェックを入れて、「Fresnel power」を「1.3」、を「3」にします。
イイ感じ💨
もっと色々動かしたいね!
そうですね✨
次回は、もっと色々なことができるように作っていきましょう。
お名前