feat: Samyaza player controls
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user