59 lines
1.5 KiB
C#
59 lines
1.5 KiB
C#
using UnityEngine;
|
|
|
|
public class globalRainSnowControlerSM : MonoBehaviour
|
|
{
|
|
public Transform airplane;
|
|
|
|
public Material rainDropsMat;
|
|
|
|
public Vector3 prevPos;
|
|
|
|
public Vector3 prevForward;
|
|
|
|
public Vector3 prevEuler;
|
|
|
|
public float motionPushPower = 0.1f;
|
|
|
|
public float diffPushPower = 1f;
|
|
|
|
public float angleDifferenceOffset = 0.1f;
|
|
|
|
public float returnSpeed = 1f;
|
|
|
|
private void Update()
|
|
{
|
|
if (!(rainDropsMat != null) || !(airplane != null))
|
|
{
|
|
return;
|
|
}
|
|
Vector3.Dot(prevForward, airplane.forward);
|
|
float num = prevEuler.y - airplane.eulerAngles.y;
|
|
if (Mathf.Abs(num) > angleDifferenceOffset)
|
|
{
|
|
float x = -0.25f * motionPushPower + -0.25f * Mathf.Abs(num) * 0.1f * diffPushPower;
|
|
if (num > 0f)
|
|
{
|
|
x = 0.55f * motionPushPower + 0.55f * Mathf.Abs(num) * 0.1f * diffPushPower;
|
|
}
|
|
rainDropsMat.SetVector("directionControls", Vector4.Lerp(rainDropsMat.GetVector("directionControls"), new Vector4(x, 0f, 0f, 0f), Time.deltaTime * 50f * Mathf.Abs(num)));
|
|
}
|
|
else
|
|
{
|
|
float num2 = returnSpeed;
|
|
_ = 0f;
|
|
rainDropsMat.SetVector("directionControls", Vector4.Lerp(rainDropsMat.GetVector("directionControls"), new Vector4(0f, 0f, 0f, 0f), Time.deltaTime * 0.1f * num2));
|
|
}
|
|
prevPos = airplane.position;
|
|
prevForward = airplane.forward;
|
|
prevEuler = airplane.eulerAngles;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
prevPos = airplane.position;
|
|
prevForward = airplane.forward;
|
|
prevEuler = airplane.eulerAngles;
|
|
rainDropsMat.SetVector("directionControls", new Vector4(0f, 0f, 0f, 0f));
|
|
}
|
|
}
|