feat: Samyaza player controls

This commit is contained in:
Alexandre Coirier
2026-05-27 00:28:20 +02:00
parent ed0aadb6c6
commit ae1f5b3ae2
5 changed files with 329 additions and 101 deletions
@@ -0,0 +1,57 @@
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()
{
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);
}
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);
}
}
}
}