2023-10-24 23:38:22 +08:00
|
|
|
using System;
|
2023-06-05 19:57:17 +08:00
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
namespace BITKit.FPS
|
2025-03-09 13:38:23 +08:00
|
|
|
{
|
|
|
|
public interface ISprint3
|
|
|
|
{
|
|
|
|
public Vector3 Value { get; set; }
|
|
|
|
void Tick(float deltaTime, Vector3 target);
|
|
|
|
}
|
2023-10-24 23:38:22 +08:00
|
|
|
[Serializable]
|
2025-03-09 13:38:23 +08:00
|
|
|
public class Spring3:ISprint3
|
2023-06-05 19:57:17 +08:00
|
|
|
{
|
|
|
|
public Vector3 value = Vector2.zero;
|
2023-10-24 23:38:22 +08:00
|
|
|
[SerializeField] private Vector3 dampValue = Vector2.zero;
|
|
|
|
[SerializeField] private float damp = 1;
|
|
|
|
[SerializeField] private float frequence = 1;
|
2023-06-05 19:57:17 +08:00
|
|
|
public void Clear()
|
|
|
|
{
|
|
|
|
value = Vector2.zero;
|
|
|
|
dampValue = Vector2.zero;
|
|
|
|
}
|
|
|
|
public Spring3(float damp, float frequence)
|
|
|
|
{
|
|
|
|
this.damp = damp;
|
|
|
|
this.frequence = frequence;
|
|
|
|
}
|
2025-03-09 13:38:23 +08:00
|
|
|
|
|
|
|
public Vector3 Value
|
|
|
|
{
|
|
|
|
get=>value;
|
|
|
|
set=>this.value=value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Tick(float deltaTime, Vector3 target)
|
2023-06-05 19:57:17 +08:00
|
|
|
{
|
|
|
|
value -= dampValue * deltaTime * frequence;
|
|
|
|
dampValue = Vector3.Lerp(dampValue, value - target, deltaTime * damp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|