Unity 2D, как анимировать позицию X, не связываясь с Y?
Единство 2D. У меня есть несколько спрайтов (облаков), которые должны хорошо плавать в небе. В основном анимация та же самая - они идут справа налево (меняют свою позицию X), но в разных позициях Y. Я не могу понять, возможно ли достичь этого с помощью одной анимации / аниматора. Должен ли я создавать отдельные анимации для каждого облака?
До сих пор мне не удавалось повторно использовать один аниматор, поскольку они всегда оказывались в одной и той же позиции Y. В итоге я создал отдельные анимации для каждого облака, но это выглядит немного странно. Есть ли способ лучше?
2 ответа
Если вы хотите использовать аниматор / технику анимации - вы можете использовать один аниматор и анимационный клип, но вам нужно удалить свойство Y pos из анимации, как на картинке, здесь у нас есть только переменная X, введите здесь описание изображения
Аниматор пишет Transform of the Object, если вы используете один и тот же анимационный клип для всех облаков, они будут следовать по тому же пути, который вы только что установили в анимации. Вот почему все ваши облака имеют одинаковое положение Y; Как сказал @Ivzhenko Oleksii, вам нужно удалить свойство Y в клипе анимации.
Вы можете использовать скрипт, который будет выглядеть примерно так:
void CloudAnimation()
{
offset += Time.deltaTime;
newCloudPos = new Vector3 (ActualCloudPos.x - offset, ActualCloudPos.y, ActualCloudPos.z);
ActualCloudPos = newCloudPos;
}
Таким образом, ваше облако будет двигаться по оси X справа налево. Когда ваше облако достигнет некоторой точки из экрана, вам нужно сделать что-то вроде этого:
ActualCloudPos = new Vector3(PlayerPos.x + 30f, RandomValueinY, 1f);
Таким образом, ваше облако будет отображаться на расстоянии 30 единиц перед вашим плеером, и благодаря функции "CloudAnimation" оно начнет перемещаться по экрану, как будто оно движется.
Надеюсь, поможет.