【发布时间】:2018-09-27 21:49:57
【问题描述】:
基本上,我有一个游戏,门票出现在屏幕顶部。当一张票完成后,它会被销毁,如果剩余票之间有间隙,票会向下滑动以填补间隙。我实际上让它工作得很好,但他们只是跳到位置上,看起来不太漂亮。
如何将对象顺利移动到目标位置?我试过搞乱Lerp 和Smoothdamp,但这两个似乎都产生了奇怪的结果(票到处都是。这是我正在使用的相关代码:
public void SlideRail()
{
ticketList.RemoveAll(x => x == null);
int count = ticketList.Count;
for (int i = destroyedIndex; i < ticketList.Count; i++)
{
if (ticketList[i] != null)
{
ticketList[i].transform.Translate(Vector3.left * 35);
ticketList[i].GetComponent<Ticket>().index--;
}
}
indexer = railPosition.IndexOf(ticketList.Last().GetComponent<Ticket>().item_pos);
up = false;
}
DestroyedIndex 是被销毁对象的索引(所以我们只在列表中移动它之后的对象) Up 是一个激活 SlideRail() 的标志,当它设置为 false 时,方法结束,下一个方法继续。
然后在 Update() 方法中调用 SlideRail:
void Update()
{
if (up && ticketList.Count > 2)
SlideRail();
if (Time.time > nextTicket)
{
nextTicket = Time.time + timeBetweenTickets;
StartCoroutine(WaitToPrint());
CreateTicket();
UpdatePosition();
}
}
我觉得我应该可以使用 Translate 来做到这一点,但我一定错过了一些东西。
【问题讨论】:
标签: c# unity3d unity3d-2dtools