【强烈推荐】基于Unity3D的三维虚拟电脑组装实验系统开发毕业论文设计 联系客服

发布时间 : 星期五 文章【强烈推荐】基于Unity3D的三维虚拟电脑组装实验系统开发毕业论文设计更新完毕开始阅读5218d6900d22590102020740be1e650e52eacf3d

触发器则表示当碰撞发生时触发事件。添加触发器只需要在Collider的监视器窗口勾选IsTrigger选项即可。在Unity3d中,主要通过如图26所示的接口来处理碰撞器和触发器的碰撞检测:

图26 Unity中的碰撞器接口 具体来讲碰撞器还可分为三类。

静态碰撞器(Static Collider)指的是没有附加刚体而附加了碰撞器的对象。这类对象会保持静止或很轻微的移动。

刚体碰撞器(Rigidbody Collider)指的是附加了刚体的对象。

运动学刚体碰撞器(Kinematic Rigidbody Collider)指的是在刚体组件中勾选了IsKinematic属性的碰撞器。它将不受物理力的影响。

碰撞检测发生时不同碰撞器发送给Collison类对象的消息如图27所示:

32

图27 碰撞检测时发送信息表

触发器触发时不同碰撞器发送给Collision类对象的消息如图28所示:

图28触发器触发时发送信息表

由于需要检测玩家鼠标所在的屏幕点与场景物体之间的碰撞,而鼠标无法添加

碰撞器,所以这里需要使用到射线法来进行碰撞检测。它的原理是以当前鼠标点为起点,垂直于屏幕向里画一条一定长度的射线,将这条射线穿过的物体进行标记。本实验用到的射线碰撞检测代码如图29所示:

33

图29 射线检测源代码

场景中的每一个电脑组件都附加了三个脚本ObjectMoveControl、Hit、DistanceDetect分别来控制移动、旋转和距离检测。它们的关系如图30:

图30 电脑组件的控制

34 4.9 场景音乐和按钮音乐

Unity中可以通过给一个游戏对象添加AudioSource来添加音乐文件,支持MP3、ogg等常见的音乐类型文件,AudioSource可以控制音乐的播放以及单边音效等效果。

音乐类型的文件在导入的时候,需要设置该音乐文件时一个2D音乐还是3D音乐。二者的区别在于,2D音乐无论“听者”的位置距离声源有多远,声音的大小都是不变的。3D音乐则类似现实世界中的音乐,当你离声源越近时听到的声音就越大。在本实验中,由于是给整个程序添加一个舒缓的背景音乐,所以勾选2D音乐就可以了。

上面提到“听者”的概念,在一个环境里有了声音,却没有人来听,那声音的存在就没有意义了,在Unity中也是一样。为了听到声音,需要在场景里添加一个Audio Listener。它通常作为组件添加在场景的主摄像机上。

在本系统中,我们在主场景中创建了一个名为Audio Source的空物体,并未它添加Audio Source组件,并把导入的背景音乐文件赋值到监视器里的Audio Clip上。进行到这里的时候,需要注意的是,由于背景音乐是全局的,也就是说在整个游戏的运行过程中,音乐都要存在,而Unity在加载新场景的时候,会将上一个场景内的所有物体全部销毁。为了保持音乐文件不被销毁,需要用到Unity提供的DontDestroyOnLoad()接口。这样音乐就不会被销毁了。

有的用户可能更喜欢安静一点的实验环境,所以还需要添加一个对音乐开关的控制。Audio Source组件中的Mute属性就控制着声源文件的开关。用NGUI制作一个按钮,但点击事件发生时,访问Audio Source的Mute属性并改变它即可。实现的源代码如图31所示:

35