一、实训目的与要求 通过本实训,基于Unity 3D和Visual Studio开发环境,使用C#语言,充分使用和综合运用《虚拟现实交互技术2》课程的所学内容,完成基于Unity3D和Gear VR的简单游戏的需求分析、设计和实现,掌握游戏的设计步骤和基本的开发流程。培养学生分析和解决问题的能力,增强学生在实践中的动手能力。 二、题目说明 2.1开发背景及意义 设计并实现了坦克大战交互系统,该系统实现了:坦克移动的控制(坦克可以自动前进),建筑物的阻挡 (模型在移动过程中会受建筑物的阻挡),炸毁道具(当坦克瞄准射击后,该目标道具消失),道具增加(增加移动速度)的功能。借助Unity游戏引擎,提升自己Unity开发能力。 2.2开发平台及工具 本系统的使用无需安装,解压后即可使用。推荐的计算机配置如下: 硬件环境:CPU要求2GHz及以上;内存要求2GB及以上; 软件环境:操作系统要求Windows XP及以上版本,并需要安装DirectX SDK 2010或更高版本。 开发环境:Unity游戏引擎 三、总体设计 3.1系统结构
- 建模:在Asset Store中选择坦克原型;
- 一条完整的街道:在Asset Store中下载相关素材,进行场景搭建;
- 坦克的移动控制:坦克可以在鼠标控制下自动前进;
- 建筑物的阻挡:坦克在移动过程中会受到建筑物的阻挡。同时,如果在目标和坦克之间有障碍物,则炮弹会被建筑物阻拦;
- 炸毁道具:添加目标道具,当坦克瞄准射击后,该目标道具消失;
- 道具:添加 “增加移动速度”、“降低移动速度”等2种功能道具,使坦克能够通过触碰来拾取道具,并获得相应的功能。 3.2系统流程图 ::: hljs-center
图3-1 系统流程图
::: 3.3系统优势 场景设置的合理度,交互性强,沉浸性好
四、功能模块实现 (1)坦克前行 :通过鼠标滑动实现坦克位置的更新,代码如下 (2)障碍物:坦克子弹遇到障碍物不能穿透,在障碍物之前爆炸,代码如下 (3)销毁道具:子弹击中的物体消失,代码如下 五、遇到问题和解决方法 1.摄像机问题。 旋转角度过大,视角偏移。当以坦克做为游戏玩家时,如果摄像机的视角与坦克视角偏差太大就容易产生夹角,发生视角偏移,产生晕眩的感觉,应尽量让摄像机与坦克视角持平。 2.子弹销毁道具交互问题。 子弹特效爆炸后,道具消失。GameObject. Destory (gameObject,2.0f); Destory是静态方法,是类名加点的形式调用方法中的两个参数。 3.Collider组件运用问题。 碰撞无法检测,使用合适的碰撞器,一般有(Mesh Collider, Box Collider, Capsule Collider, Wheel Collider)将Collider大小调整为不同形状,但要合适。 4.Rigidbody组件运用问题。 游戏物体下落,重力过大,游戏物体抖动,放置地面不平滑。如果让刚体(Rigidbody)静止下来以便在一段时间内不移动,他们会“入睡”。就是说,他们在物理更新过程中不会进行计算,所以它们不会前往任何位置。所以在放置玩家位置时,需与地面刚好相接,抖动较小。 5.粒子系统(Particle System)参数调整问题。 在素材包中打开发射圈特效,没找到如何播放特效,通过查找博客,了解粒子系统的常见参数意思。 六、实训总结 在我寻找Collider中Is Trigger是什么意思的时候,我找到了一篇博客最后的结论如下: 1.想要打印触发器方法,必须有一方是触发器,必须有一方带有刚体。二者缺一不可。 2.双方都是触发器,或者其中一方是触发器,另一方是碰撞器,都不会产生交互。 3.只要一方是触发器,并且有刚体组件,不管另一方是碰撞体还是触发器都会交互各自的触发器方法。 4.一般我们将触发器方法写在角色碰到的物体上,角色一般不参与触发方法。只写碰撞方法。 七、参考文献
【1】spring_dede的博客Unity 发射射线 检测销毁 https://blog.csdn.net/spring_dede/article/details/122432499?ops_request
【2】qq_41263535的博客Unity 刚体运动物体抖动解决方法 https://blog.csdn.net/qq_41263535/article/details/103967523?ops_request
【3】Zyt的博客Unity 相机跟随人物的几种方式 https://blog.csdn.net/qq_41973169/article/details/108513961?ops_request 【4】little_fat_sheep的博客【Unity3D】碰撞体组件Collider https://blog.csdn.net/m0_37602827/article/details/125453517?ops_request 【5】Unity虚拟仿真的博客Unity API(六):Rigibody https://blog.csdn.net/wkhabc/article/details/52269177?ops_request