在Unity 5.2中将其面板上的X移动一定量

时间:2015-10-13 01:57:59

标签: c# unity3d

我似乎无法正常工作。 这就是我所拥有的: 帆布    面板(用于滚动)800 * 400      面板(容器)       PANEL1       是Panel2       ·Panel3中       Panel4       Panel5    ForwardButton    BackwardButton

鉴于此层次结构,我希望每次单击ForwardButton时将容器面板移动到1个面板上。

void Update () {
    float step = speed * Time.deltaTime;
    if (pressedForward)
        panel.transform.position = Vector3.Lerp(panel.transform.position, farLeft.transform.position, step);
    else if (pressedBack)
        panel.transform.position = Vector3.Lerp(panel.transform.position, farRight.transform.position, step); 
}

我在Panel的左侧添加了一个对象,并使用Lerp顺利移动到他们的。这适用于仅1个面板。

我似乎无法弄清楚如何让它在所有这些中移动,一次一个。我能够让它移动的最好的是1 1/2倍。

我确定这是一个非常简单的修复...

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您应该使用 RectTransform ,而不是转换:

var rt = panel.GetComponent<RectTransform>();
rt.position = Vector3.Lerp(...)

更新:刚测试了上面的代码,它在我的测试中有效,见下面的动画:

enter image description here

答案 1 :(得分:1)

step的{​​{1}}部分是错误的,它不是一个常数值,它应该是一个变化的值,它是沿你试图的距离的标准化位置(0-1)插。相反,按照您设置Lerp的方式,如果您使用step功能,它应该有效。

MoveTowards(...)

编辑:如果您想继续使用float step = speed * Time.deltaTime; if (pressedForward) panel.transform.position = Vector3.MoveTowards(panel.transform.position, farLeft.transform.position, step); else if (pressedBack) panel.transform.position = Vector3.MoveTowards(panel.transform.position, farRight.transform.position, step); ,请查看Unity文档设置Lerp的方式:

step