Простое решение, которое я подумал: допустим, у меня есть игрок, и он удерживает свою предыдущую позицию в начале, и всякий раз, когда он движется, скажем, 5 единиц, тогда мы говорим объекту, который последует за ним, чтобы следовать его предыдущей позиции.и затем мы обновляем предыдущую позицию игрока до ее текущей позиции и выполняем те же шаги.
Я создал простую тестовую сцену и выполнил следующие шаги:
- Я создал 2 игровых объектапод названием Player и FollowPlayer
- Я написал нижеприведенный скрипт и прикрепил его к Player
public static event Action<Vector3> FollowMe;
[SerializeField] private float _followDistance;
private Vector3 _previousPosition;
private void Start()
{
_previousPosition = transform.position;
}
private void Update()
{
if(Vector3.Distance(transform.position,_previousPosition) > _followDistance)
{
if(FollowMe != null)
{
FollowMe.Invoke(_previousPosition);
}
_previousPosition = transform.position;
}
}
- Затем для объекта FollowPlayer я написал скрипт ниже и прикрепилк этому
private void Start()
{
Player.FollowMe += OnFollowMe;
}
private void OnDestroy()
{
Player.FollowMe -= OnFollowMe;
}
private void OnFollowMe(Vector3 position)
{
transform.position = position;
}
Опять же, это простой логический сценарий следования той же логике в игре Гладиус, и я уверен, что вы можете использовать эту идею и сделать ее более общей и удобной.