2017-02-10 46 views
2

我正在嘗試製作一個類似於Temple Run 2的遊戲。我希望獲得與問題中所述相同的效果,並以附加的截圖形式表示。當我將硬幣設置爲中心頂部但沒有左上角的運氣時,我嘗試使用動畫工作。請幫忙。 感謝如何將所有硬幣從3D空間移動到2D畫布的角落

這裏是代碼:

if (col.gameObject.tag == "500") { 
    score = CryptograpicEncryption.GetInt ("ScoreKey") + pick500; 
    CryptograpicEncryption.SetInt ("ScoreKey", score); 
    ScoreCount.text = "Cash Collected: " + CryptograpicEncryption.GetInt ("ScoreKey").ToString(); 
    col.gameObject.GetComponent<Animator>().SetTrigger ("openNote"); 
    col.gameObject.transform.GetChild (1).GetChild (1).gameObject.SetActive (false); 
    col.gameObject.GetComponent<Animator>().SetTrigger ("highLeft"); 
} 

enter image description here

回答

3

這取決於你的遊戲,但這裏有一些選擇:

  1. 添加一個空的遊戲物體,以你的性格和精心設置它的位置,以便它始終位於所需的UI對象後面。然後將硬幣從三維空間移動到遊戲對象的三維空間位置。

  2. 玩家一拿到硬幣就立即取出硬幣,然後用UI.Image在它的位置(在二維空間的畫布上)立即移動到畫布的角落創建一個相同的硬幣。您可以使用2dPosition = Camera.main.WorldToScreenPoint(3dPosition)

  3. 將3d空間位置轉換爲2d您可以使用3dPosition = Camera.main.ScreenToWorldPoint(2dPosition)來計算畫布角落的三維位置,並使硬幣跟隨該位置。但是隨着攝像機移動,位置會發生變化,因此您應該每幀重新計算一次。

+0

感謝您的回覆。 #2聽起來像是一個答案。如果有更多的選擇,我會等待更多時間。否則,我會接受你的答案。 –

+0

@JamshaidAlam是的#2將是最合適的路線。 3D中的位置數量無限,表示2D元素重疊,因此選擇3D中合適的位置以「發送」3D硬幣更難。即你可能會希望它在任何時候都顯示大致相同的大小,這可能會涉及一些棘手的投影數學問題。 –

+0

感謝LukeBriggs和@Bijan。我接受這個答案是因爲#2是實現這個問題的最佳選擇。乾杯! –