我正試圖讓角色將瓷磚逐個移動到某個位置。會發生什麼事是點擊位置,然後代碼找到該位置的路徑,並一次移動一個拼貼,直到到達該位置。我有尋路代碼工作,它在一個ArrayList(不要判斷)。然後我插入數組列表變成一個循環,如下所示:暫停循環以允許協程/循環完成圖形問題
//This function Moves Character to clicked location
void MoveToPosition(ArrayList Path)
{
int s = 2;
while (s < Path.Count)
{
Debug.Log(Path[s]);
StartCoroutine(MoveToPositionBuffer((Vector3) Path[s]));
s++;
}
ResetTiles();
}
//This does the continous Calculations Somehow
IEnumerator MoveToPositionBuffer(Vector3 Position)
{
Vector3 StartingPosition = gameObject.transform.position;
Vector3 EndPosition = Position;
EndPosition[1] = StartingPosition[1];
float counter = 0;
while(counter < 1)
{
counter += Time.deltaTime;
gameObject.transform.position = Vector3.Lerp(StartingPosition, EndPosition, counter);
yield return null;
}
}
現在我的主要問題是,它會遍歷整個環,然後從開始位置到結束位置做了Lerping,並跳過圖形從第一個瓦片移動到第二個瓦片到第三個等等。我需要做的是暫停循環讓第一個Coroutine在循環繼續之前完成並啓動第二個Coroutine(如此等等)。我嘗試了一些我在谷歌上發現的東西(Thread.Sleep()
,Yield Return WaitForSeconds()
在協程中),但它似乎沒有工作....任何幫助將不勝感激。
我試圖做這種方式。簡而言之,我在更新函數中添加了一些代碼,這決定了它是否應該移動到下一個位置......但現在它不生成動畫,並且它現在從每個方塊傳送到下一個方塊。有任何想法嗎? –
功能!不是一個錯誤:) – jdmdevdotnet