Элементы пользовательского интерфейса Unity перемещают анимацию с помощью iTween - PullRequest
0 голосов
/ 18 октября 2018

Я использовал iTween для анимации каждого элемента главного меню.Но анимация не воспроизводится в соответствии с желанием мышления, запускается что-то другое, поэтому я запутался в этом из-за решения.

Я хочу сыграть название игры, переместить анимацию с 1200 единиц на 0 единиц, используя анимацию перемещения между.Но как-то так, я получил результат - он остановился на -540 единиц: enter image description here

Этот код, который я написал для анимации перемещения изображения пользовательского интерфейса:

iTween.MoveTo (ballTitleObj, iTween.Hash ("x", 0f, "speed", 100f, "delay", 1f));

Я знаю, как работает работа с компонентом Transform и элементом пользовательского интерфейса с работой RectTransform, но что мне нужно сделать для решения?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Сначала получите RectTransform заголовка:

this.titleRectTransform = ballTitleObj.GetComponent<RectTransform>();

Затем позвоните iTween.ValueTo, потому что вы не хотите изменять преобразование, вам нужно изменить RectTransform.

iTween.ValueTo(ballTitleObj, iTween.Hash(
    "from", this.titleRectTransform.anchoredPosition,
    "to", new Vector2(0, this.titleRectTransform.anchoredPosition.y),
    "speed", 100f,
    "delay", 1f,
    "onupdatetarget", this.gameObject, 
    "onupdate", "MoveBallTitle"));
}

И в том же классе, в котором вы вызываете iTween.ValueTo, вам необходимо определить метод MoveBallTitle, который обновляет anchoredPosition:

public void MoveBallTitle(Vector2 position){
    this.titleRectTransform.anchoredPosition = position;
}

Этот ответ основан наoff этот ответ на сайте вопросов и ответов Unity

0 голосов
/ 18 октября 2018

Хорошо, теперь потратив достаточно времени на решение этой проблемы, я нашел по крайней мере одно решение для этой проблемы.

Я начал использовать DOTween, а не iTween: DOTween - Документация

Он содержит встроенную поддержку анимации пользовательского интерфейса Unity, и я могу легко реализовать ее в рамках проекта.Вот строка кода, которая работала для меня:

ballTitle.DOAnchorPosX (0f, 1f, false).SetDelay (0.5f).SetEase(Ease.OutBack);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...