Unity transform

Рейтинг: 2Ответов: 2Опубликовано: 11.10.2014

Было, я уже пытался разобраться со своим вопросом, задав вопрос сюда такой, какой бы не раскрывал всех карт. Затея эта провалилась, потому задаю второй вопрос.
Я пишу змейку на юнити. Змейка состоит из трех игровых объектов: голова, тело (которое затем должно будет дублироваться) и хвост. Для головы задана скорость движения и управление стрелочками, тело же должно полностью повторять маршрут головы. Идея была такова:

  1. Тело движется со скоростю, которая задана в скрипте головы.
  2. Если нажата клавиша поворота (голова просто поворачивает), тело заносит в четыре разных очереди: в x, y -- координаты поворота, в rz, rw -- параметры ротации, на которые повернута голова.
  3. Если позиция тела совпадает с верхним элементом очереди, то

    body.transform.rotation.set(body.transform.rotation.x, body.transform.rotation.y, rz.pop(), rw.pop());
    

Выставляется соответствующая ротация и эти координаты забываются.
На деле это все замечательно и красиво, тем не менее тело едет тупо по прямой, не смотря на то, что все нужные координаты в очередь заносятся.

Ответы

▲ 2Принят

Проблема решена. Суть была в том, что тело перескакивало нужные координаты

▲ 3

А не проще было сделать движение с хвоста? В классической змейке тело состоит из равных узлов. Бежим от хвоста к голове и переставляем узел n на место впереди стоящего и разворачиваем его так же как был повернут предшествующий узел n-1. Когда проходим все узлы и добираемся до головы, то остается только направить голову в ту сторону куда двигает змею пользователь. После этого может придется развернуть следующий за головой узел в требуемое направление, а так в общем то все. И не надо никакой очереди)