Как сделать движение змеи четко по клеткам в сетке Grid?

уважаемые программисты! Прошу помочь с ситуацией: У меня есть змея, которая двигается по скрипту:

Rigidbody2D rb;
float WormSpeed = 1;
void Start()
{
    // задаем движение вперед
    rb = GetComponent<Rigidbody2D>();
    rb.velocity = transform.up * WormSpeed;
}

Так же у меня есть скрипт создания туловища:

public Transform WormsHead;
public float WormsDiameter;
public int body;
private List<Transform> WormsBody = new List<Transform>();
private List<Vector2> positions = new List<Vector2>();

void Start()
{
    positions.Add(WormsHead.position);

    for (int i = 0; i < body; i++)
    {
        AddBody();
    }
}

void Update()
{
    float daistance = ((Vector2) WormsHead.position - positions[0]).magnitude;

    if (daistance > WormsDiameter)
    {
        Vector2 direction = ((Vector2)WormsHead.position - positions[0]).normalized;

        positions.Insert(0, positions[0] + direction * WormsDiameter);
        positions.RemoveAt(positions.Count - 1);

        daistance -= WormsDiameter;
    }

    for (int i = 0; i < WormsBody.Count; i++)
    {
        WormsBody[i].position = Vector2.Lerp(positions[i + 1], positions[i], daistance / WormsDiameter);
    }

}
public void AddBody()
{
    Transform body = Instantiate(WormsHead, positions[positions.Count - 1], Quaternion.identity, transform);
    WormsBody.Add(body);
    positions.Add(body.position);
}

При столкновении с яблоком она поворачивает, вот скрипт поворота:

private void OnTriggerEnter2D(Collider2D other)
{
    
    if(other.CompareTag("aple"))
    {
        float angle = 360f;
        transform.rotation = Quaternion.Euler(0, 0, angle);
        rb.velocity = transform.up * WormSpeed;
        Destroy(other.gameObject);
     }

Как мне осуществить четкое движение змеи по сетке Grid, а так же ровный поворот по сетке при касании с объектом (размер сетки установил X=0,5 Y=0,5? Мне нужно чтоб змея двигалась плавно и четко по клеткам(отмечу что змея двигается сейчас постоянно и плавно, но у нее нет привязки к сеткевведите сюда описание изображения


Ответы (0 шт):