HeavenStudio/Assets/Scripts/Transform/ScaleByVelocity.cs

43 lines
873 B
C#
Raw Normal View History

2021-12-19 04:10:43 +00:00
using UnityEngine;
public class ScaleByVelocity : MonoBehaviour
{
public enum Axis { X, Y }
public float bias = 1f;
public float strength = 1f;
public Axis axis = Axis.Y;
public float size;
public new Rigidbody2D rigidbody;
private Vector2 startScale;
private void Start ()
{
startScale = transform.localScale;
}
private void Update ()
{
var velocity = rigidbody.velocity.magnitude;
/*if (Mathf.Approximately (velocity, 0f))
return;*/
var amount = velocity * strength + bias;
var inverseAmount = 1.0f;
if (velocity > 0.4f)
inverseAmount = (1f / amount) * startScale.magnitude;
switch (axis)
{
case Axis.X:
transform.localScale = new Vector3 (amount - 0.414214f, inverseAmount, 1f);
return;
case Axis.Y:
transform.localScale = new Vector3 (Mathf.Clamp(inverseAmount, 0.6f, 1f), amount, 1f);
return;
}
}
}