自童年时期起,就对太空探索充满了浓厚的兴趣。那些能够无需3D眼镜就能呈现3D效果的书籍总是让着迷。现在,构想了一款应用,它能够展示过去发生的不同太空飞行任务。这既是对太空探索辉煌岁月的致敬,也是对当前太空探索热潮的一种回应。该应用将使用手势,如平移、触摸、旋转等,以提供良好的图形用户界面体验。这是一种创新且引人入胜的教育方式,因为它将揭示现实中发生的太空飞行任务,用户可以通过手势与应用互动。这款应用非常适合在联想平板上展示,可以使用内置的HDMI端口在大屏幕上展示模型,非常适合在讲座实验室中解释太空探索,以及为孩子们提供创新的教育方式。
项目视图的Unity截图、Unity中不同的场景、应用的截图:
截图1、截图2、截图3、截图4、截图5、截图6、截图7、截图8。
打算开发一个3D交互模型,其中包括不同的太空飞行任务。有一定的Unity 3D引擎经验,打算在这里使用它。它将是一个基于图形用户界面的应用,用户将通过触摸与屏幕互动。将使用Unity内置的功能在设备上启用触摸。
当从一个对象切换到另一个对象进行演示时,需要按下“移除所有识别器”按钮,然后移动到下一个对象以使手势工作。当移动到下一个对象时,按下“添加点击识别器”,然后点击“添加一个旋转识别器”以使手势继续。记住,在进入下一个对象场景之前,通过按下“移除所有识别器”按钮来释放手势,然后移动到下一个幻灯片。
将演示视频压缩到了13.5MB(上传限制是10MB),但仍然无法上传。第一个演示包括5个太空飞行模型,将在后面更新所有的模型。
需要使用MSI工具为应用添加数字签名。将使用高级安装程序打包应用。
提供了编写的代码的示例视图,编程方法使用C#脚本。
// 创建GUI框以及加载场景的代码
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
void OnGUI () {
// 创建背景框
GUI.Box(new Rect(10, 10, 100, 90), "Loader Menu");
// 创建第一个按钮。如果按下,Application.LoadLevel(1)将被执行
if (GUI.Button(new Rect(20, 40, 80, 20), "Level 1")) {
Application.LoadLevel(1);
}
// 创建第二个按钮。
if (GUI.Button(new Rect(20, 70, 80, 20), "Level 2")) {
Application.LoadLevel(2);
}
}
}
提供旋转效果的代码:
using UnityEngine;
using System.Collections;
public class spin : MonoBehaviour {
public float speed = 10f;
// 初始化
void Start () {
}
// 每帧调用一次
void Update () {
transform.Rotate(Vector3.left, speed * Time.deltaTime);
}
}
使用Input.Touch实现触摸的C#脚本:
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
void Update() {
int fingerCount = 0;
foreach (Touch touch in Input.touches) {
if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)
fingerCount++;
}
if (fingerCount > 0)
print("User has " + fingerCount + " finger(s) touching the screen");
}
}
正在更新项目的状态。已经向项目中添加了其他模型。以下是更新:
更多更新即将到来。正在开发一个测验模型,人们将获得与太空探索相关的互动问题和答案。更多事实和数字与此相关,以帮助教育他人。加速计传感器使用(进行中)。
if (GUILayout.Button("APPOLO LUNAR")) {
Application.LoadLevel("6");
}
if (GUILayout.Button("FREEDOM 7")) {
Application.LoadLevel("5");
}
if (GUILayout.Button("JUPITER-C")) {
Application.LoadLevel("4");
}
if (GUILayout.Button("GEMINI")) {
Application.LoadLevel("3");
}
if (GUILayout.Button("APPOLO SOYUZ")) {
Application.LoadLevel("2");
}
if (GUILayout.Button("SATURN -V")) {
Application.LoadLevel("7");
}
if (GUILayout.Button("GEMINI CAPSULE")) {
Application.LoadLevel("8");
}
if (GUILayout.Button("JUPITER-C")) {
Application.LoadLevel("9");
}
if (GUILayout.Button("CRAWLER")) {
Application.LoadLevel("10");
}
if (GUILayout.Button("EMU")) {
Application.LoadLevel("11");
}
if (GUILayout.Button("EMU1")) {
Application.LoadLevel("12");
}
if (GUILayout.Button("ISS")) {
Application.LoadLevel("13");
}
if (GUILayout.Button("DISCOVERY")) {
Application.LoadLevel("14");
}
if (GUILayout.Button("EXIT")) {
Application.Quit();
}
现在,应用中添加了模型的新视频如下所示:
链接
Vector3是Unity中用于表示3D向量和点的结构。这个结构在整个Unity中用于传递3D位置和方向。它还包含执行常见向量操作的函数。除了下面列出的函数外,还可以使用其他类来操作向量和点。
GUILayout类是Unity图形用户界面的自动布局接口。
描述手指触摸屏幕的状态的结构。
if (GUI.Button(Rect(130,40,80,20), "EXIT")) {
Application.Quit();
}
Unity是一个很棒的游戏引擎,它具有开发游戏或应用并将其部署到不同平台的许多特性。一次编码,适用于Windows、Mac、Linux、Android等。从事软件开发已经快一年了,在过去的7个月里一直在使用Unity,这是一个很酷的工具。
http://unity3d.com/learn/documentation