0

我使用 iTween 为每个主菜单元素提供动画。但是动画并没有按照期望的想法播放,正在运行一些不同的东西,所以我对此感到困惑以寻求解决方案。

我想玩游戏标题,使用 iTween 移动动画将动画从 1200 单位移动到 0 单位。但是像这样,我得到了一个结果 - 它在 -540 单位停止: 在此处输入图像描述

这种代码,我为 UI 图像移动动画编写的:

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

我知道 iTween 与 Transform 组件和 UI 元素一起使用 RectTransform 但我需要为解决方案做什么?

4

2 回答 2

0

首先,获取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更新锚定位置的方法:

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

此答案基于Unity Q&A 网站上的此答案

于 2018-10-18T16:23:46.490 回答
0

好的,现在花足够的时间来解决这个问题,我至少找到了一个解决方案。

我开始使用 DOTween 而不是 iTween: DOT​​ween - 文档

它的内置包含对 Unity UI 动画的支持,我可以在项目中轻松实现。这是对我有用的代码行:

ballTitle.DOAnchorPosX (0f, 1f, false).SetDelay (0.5f).SetEase(Ease.OutBack);
于 2018-10-18T16:01:41.013 回答