2014-03-29 69 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