探索宇宙:3D空间飞行任务应用开发

自童年时期起,就对太空探索充满了浓厚的兴趣。那些能够无需3D眼镜就能呈现3D效果的书籍总是让着迷。现在,构想了一款应用,它能够展示过去发生的不同太空飞行任务。这既是对太空探索辉煌岁月的致敬,也是对当前太空探索热潮的一种回应。该应用将使用手势,如平移、触摸、旋转等,以提供良好的图形用户界面体验。这是一种创新且引人入胜的教育方式,因为它将揭示现实中发生的太空飞行任务,用户可以通过手势与应用互动。这款应用非常适合在联想平板上展示,可以使用内置的HDMI端口在大屏幕上展示模型,非常适合在讲座实验室中解释太空探索,以及为孩子们提供创新的教育方式。

应用中将包含的模型

项目视图的Unity截图、Unity中不同的场景、应用的截图:

截图1、截图2、截图3、截图4、截图5、截图6、截图7、截图8。

开发方法及应用预期用途

打算开发一个3D交互模型,其中包括不同的太空飞行任务。有一定的Unity 3D引擎经验,打算在这里使用它。它将是一个基于图形用户界面的应用,用户将通过触摸与屏幕互动。将使用Unity内置的功能在设备上启用触摸。

  • 触摸
  • 平移识别器
  • 单指旋转识别器
  • 支持手写笔数字笔
  • 使用HDMI端口在大屏幕上进行更好的演示
  • 点击

当从一个对象切换到另一个对象进行演示时,需要按下“移除所有识别器”按钮,然后移动到下一个对象以使手势工作。当移动到下一个对象时,按下“添加点击识别器”,然后点击“添加一个旋转识别器”以使手势继续。记住,在进入下一个对象场景之前,通过按下“移除所有识别器”按钮来释放手势,然后移动到下一个幻灯片。

将演示视频压缩到了13.5MB(上传限制是10MB),但仍然无法上传。第一个演示包括5个太空飞行模型,将在后面更新所有的模型。

将应用带到Intel AppUp商店的整个过程:

需要使用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"); } }

项目更新

正在更新项目的状态。已经向项目中添加了其他模型。以下是更新:

  • 国际空间站(ISS):可以与3D结构进行交互,平移和旋转它。
  • 木星模型:这是最重要的任务之一,它展示了3D结构的视图,可以与手势进行交互。
  • 土星五号航天飞机:这个模型展示了与3D结构的交互,对象不断旋转。同时显示土星五号的数据作为文本信息。
  • 宇航员模型:在这个结构中,可以自由地进行交互。
  • EMU模型:国际空间站的另一个视图,可以与模式进行交互,平移和旋转并检查。
  • 发现号航天飞机:良好的交互式太空飞行视图,以及可以与之交互的宇航员。

更多更新即将到来。正在开发一个测验模型,人们将获得与太空探索相关的互动问题和答案。更多事实和数字与此相关,以帮助教育他人。加速计传感器使用(进行中)。

Unity中组织场景的快速代码片段

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(); }

Unity中项目场景的外观

现在,应用中添加了模型的新视频如下所示:

链接

这款应用的亮点

  • 与触摸的高互动性
  • 包括平移、点击手势
  • 3D太空飞行模型的展示方式
  • 有关人类太空飞行的测验和信息
  • Unity Facebook SDK集成,用于跨平台分享信息或添加新事实
  • 支持加速计(进行中)
  • 具有3D模型的良好图形用户界面

什么是Vector3?

Vector3是Unity中用于表示3D向量和点的结构。这个结构在整个Unity中用于传递3D位置和方向。它还包含执行常见向量操作的函数。除了下面列出的函数外,还可以使用其他类来操作向量和点。

GUILayout

GUILayout类是Unity图形用户界面的自动布局接口。

触摸

描述手指触摸屏幕的状态的结构。

  • deltaPosition:自上次变化以来的位置变化。
  • deltaTime:自上次变化以来经过的时间量。
  • fingerId:触摸的唯一索引。
  • phase:描述触摸的阶段。
  • position:触摸的位置。
  • tapCount:点击次数。

在Unity中关闭应用

if (GUI.Button(Rect(130,40,80,20), "EXIT")) { Application.Quit(); }

为什么选择Unity?

Unity是一个很棒的游戏引擎,它具有开发游戏或应用并将其部署到不同平台的许多特性。一次编码,适用于Windows、Mac、Linux、Android等。从事软件开发已经快一年了,在过去的7个月里一直在使用Unity,这是一个很酷的工具。

Unity的好资源

http://unity3d.com/learn/documentation

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485