2014-03-29 56 views
0

我是Unity3d的新手,我正在開發一個Android應用程序的AR應用程序,使用NyARToolkit插件。我需要一些指導來幫助實現以下效果。我們假設,有一個3D模型作爲遊戲對象,描繪了一個起點爲「你在這裏」的建築物樓層。如果某個房間被觸摸了,我想要從這個級別的起點到用戶選擇的其他點進行動畫。用戶觸摸的3D模型的交互式動畫

下圖顯示了這個概念的想法:

enter image description here

enter image description here

我期望在這樣類似的東西,但無法找到匹配我的需求,所以 上午需要你的幫助給我一些關於如何在Unity3d中實現這個功能的建議。我雖然使用例如一個java腳本,var值存儲屏幕上點的x,y?

因爲我是新手你的觀點,關於這個概念的可行性對於給我在Unity3d中做這件事的正確方法至關重要。

謝謝大家的時間閱讀,等待您的回覆。如果你想讓我詳細說明這個概念,我會願意這樣做。

回答

0

完成此操作的最簡單方法是覆蓋一個矩形或每個點擊的對象在一個平面上,並且動態地改變覆蓋面的可見性:

void ToogleVisibility(GameObject plane, bool bEnable) 
{ 
    plane.setActive(bEnable); 
} 

enter image description hereenter image description here

編輯:我認爲這是已經非常清楚,但對於OP來說似乎並非如此。請參閱下面的完整代碼。

public class Highlight : MonoBehaviour { 

GameObject room1=null; 
GameObject room2=null; 

bool bRoom1Active = false; 
bool bRoom2Active =false; 

// Use this for initialization 
void Start() { 
    room1 = GameObject.Find ("Room1"); 
    room2 = GameObject.Find ("Room2"); 
    room1.SetActive (false); 
    room2.SetActive (false); 
} 

// Update is called once per frame 
void Update() { 

} 

void OnGUI() //Substitute this with your OnTouch() logic 
{ 

    if (GUI.Button (new Rect (10, 10, 100, 30), "Toggle Room1")) { 
     bRoom1Active = !bRoom1Active; 
     room1.SetActive(bRoom1Active); 
    } 
    if (GUI.Button (new Rect (10, 60, 100, 30), "Toggle Room2")) { 
     bRoom2Active = !bRoom2Active; 
     room2.SetActive(bRoom2Active); 
    } 
} 
} 
+0

謝謝@David,爲您的答案。之後,我應該添加一個腳本,以便在這些飛機或反面上運行?請詳細說明你的這些建議,因爲我沒有完全按照你的。 – user3244633

+0

@ user3244633,請參閱更新是否有意義。 – David