我似乎无法正常工作。 这就是我所拥有的: 帆布 面板(用于滚动)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倍。
我确定这是一个非常简单的修复...
感谢您的帮助!
答案 0 :(得分:1)
您应该使用 RectTransform ,而不是转换:
var rt = panel.GetComponent<RectTransform>();
rt.position = Vector3.Lerp(...)
更新:刚测试了上面的代码,它在我的测试中有效,见下面的动画:
答案 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