Files
2026-06-02 12:16:31 +02:00

60 lines
1.5 KiB
C#

using OctoCore.Components;
using UnityEngine;
namespace OctoCore
{
public class OctoPlayerSpeedArea : MonoBehaviour
{
[System.Serializable]
public class Settings
{
public float MinRadius = 1;
public float MaxRadius = 4;
[Space(10)]
public float MinSpeedMultiplier = 0;
public float MaxSpeedMultiplier = 1;
[Space(10)]
public AnimationCurve SpeedCurve = AnimationCurve.EaseInOut(0, 0, 1, 1);
}
[SerializeField] private Settings _settings;
void OnDrawGizmos()
{
#if UNITY_EDITOR
UnityEditor.Handles.color = Color.cyan;
UnityEditor.Handles.matrix = transform.localToWorldMatrix;
UnityEditor.Handles.DrawWireDisc(Vector3.zero, Vector3.up, _settings.MinRadius);
UnityEditor.Handles.DrawWireDisc(Vector3.zero, Vector3.up, _settings.MaxRadius);
#endif
}
void Start()
{
}
void Update()
{
if (!OctoPlayer.Instance)
return;
float dist = Vector3.Distance(transform.position, OctoPlayer.Instance.transform.position);
if (dist < _settings.MaxRadius)
{
float t = Mathf.InverseLerp(_settings.MinRadius, _settings.MaxRadius, dist);
float speedMultiplier = Mathf.Lerp(_settings.MinSpeedMultiplier, _settings.MaxSpeedMultiplier, t);
OctoPlayer.Instance.SetSppedMultiplier(speedMultiplier);
}
}
}
}