Unity5使用所遇难点及解决方案(基于与unity4的比较)(二.动作对象)

来源:互联网 发布:java趣味编程100例下载 编辑:程序博客网 时间:2024/06/05 20:17

一.碰撞器

作用:以物理方式对网格提供一种碰撞检测,同时也作为一种触发事件或反应的手段。
包括:capsule,sphere,box,mesh,wheel等。
  mesh collider是一种不规则的碰撞器,是根据设定的mesh来构建碰撞器,优点在于能完美得契合对象,但是消耗很大。这种碰撞器可以在导入对象的时候,选中generate colliders,点击apply,就直接生成一个mesh collider在将来使用的实例对象中 ,而对于已经使用了的实例对象,可以点击revert来更新设置。(存在一些导入对象无法用这种方式来生成,原因未解。。但是可以直接给实例对象添加一个mesh collider组件,并指定相应的mesh即可)。
  由于代价高昂以及绝大多数对象碰撞器需求很简单,所以多数情况采用box,capsule,sphere等简单规则的碰撞器来组合成复杂的形状来满足碰撞需求。
  collider的另一个作用在于用做触发事件,如光标拾取等。
  一个对象只能有一个碰撞器,这就需要使用层次结构,即一组各自带有碰撞器的对象,将其与实际对象放在一组,而之后进行对组的操作。

二.触发动画

var theparent:GameObject;var aniClip:AnimationClip;//AnimationClip 动画剪辑类 function OnMouseDown(){//鼠标点击触发事件  print(name+"picked");//name属性 使用该脚本对象的  //theparent.GetComponent.<Animation>().Play();//只有legacy有Animation组件  theparent.GetComponent.<Animation>().Play(aniClip.name);//需要指定动画剪辑的名字}//该段代码可以指定一个对象触发指定的动画,而触发方式是点击使用该脚本的对象。

三.声音音效

  unity支持多种声音文件,包括

  • .wav(WAV为微软公司(Microsoft)开发的一种声音文件格式,WAV是最接近无损的音乐格式,所以文件大小相对也比较大),.
  • mp3(MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。它被设计用来大幅度地降低音频数据量。MPEG制定的压缩标准)
  • .aif(AIF/AIFF是音频交换文件格式(Audio Interchange File Format)的英文缩写,是Apple公司开发的一种声音文件格式)
  • .ogg(Ogg全称是OGGVobis(oggVorbis)是一种音频压缩格式,类似于MP3等的音乐格式。Ogg是完全免费、开放和没有专利限制的。).

      添加一个音效,需要两个组件。首先需要有一个对象携带audio Listener,在一个场景中只能有一个audio listener,之后可以在各个对象上添加audio source。这样listener就可以接收source的声音。
     在audio source中可以设置包括如下:
     

  • udio Clip(声音剪辑): 也可以叫声音片段,选取声音文件
  • Mute:是否禁音
  • Bypass Effects:忽略音效
  • Play On Awake(唤起时播放): 如果勾选这个,那么当First Person Controller被加载到游戏场景中时音乐就会自动播放。
  • Loop:是否循环
  • Priority(优先级): 当游戏里同时播放的音乐数量太多时,优先级低的音乐可能不会被播放,调整优先级可以防止背景音乐这种重要的音乐被忽略。
  • Volume:音量
  • Pitch(音高):通过加速播放实现的音高调整,也是几倍速的意思
  • stereo pan:在2D声音时有效,从-1到1来调整左右声道的比例。
  • spatial blend:从2D到3D的过渡。
  • reverb zone mix:混响效果的比例。
  • 3D Sound Setting(3D声音设置):3D效果时有效,包括以下几条
  • Doppler Level(多普勒效应等级):多普勒效应,就是会随着listener的移动速度来影响听到的声音的频率
  • Volume RollOff(音量过渡模式) :当listener从远处靠近声音源的过程中,音量的渐变方式。包括: 1、Logarithmic Rolloff(对数过渡模式) 2、Linear Rolloff(线性过渡模式) 3、Custom Rolloff(自定义过渡模式) 。
  • max diatance:声音传播最远距离。
  • min distance:声音传播最近距离.
  • 根据以上三个设置会产生一个坐标图,横坐标指listener与audio的距离,纵坐标指音量大小,中间是这两个的函数,或者对数,或者线性,或者自己拖拽生成自定义函数图像。
  • 注意:一定要注意listener是在哪里,应该使之在控制的对象上,即使你是在制作第三人称游戏,也不应该放在摄像机上,否则因为摄像机始终在斜上方看着对象,使你体验的声音就不会是第一人称的了,会导致没有代入感。

    使用脚本控制声音播放:

  if(GetComponent.<AudioSource>()){   GetComponent.<AudioSource>().Play();  } //GetComponent.<AudioSource>().Play();播放对象的AudioSource组件的声音剪辑 //优化版yield WaitForSeconds(audiodelay);//yield 暂停一帧 yield WaitForSeconds(audiodelay); 暂停audiodelay帧GetComponent.<AudioSource>().PlayOneShot(auClip);//GetComponent.<AudioSource>().PlayOneShot(auClip);播放对象的选中的的声音剪辑,这样启动的声音彼此不会影响,会同时响起//再优版 GetComponent.<AudioSource>().clip=auClip;//这样会改变默认音频,而不是启动多个音频   GetComponent.<AudioSource>().PlayDelayed(audiodelay);  }

四.unity自带的动画视图——自制简易动画

给一个对象添加animation组件之后可以使用unity自带的动画视图来给该对象自制动画。
window—>animation使用动画视图。
该视图包括以下几点使用区域:
这里写图片描述
使用add propert,在该面板选择对象的各个属性。
使用导航中的红色按钮进入编辑动画,中间的开始按钮播放当前动画。
使用右上角切换当前编辑的帧数。
这里写图片描述
使用curves视图(在左下角调整),可以调整属性的变化曲线。
调整的时候,首先先在各个帧添加节点add key(快捷键K),可以选择需要的属性添加。在当前帧可以在scene中调整对象的状态,会自动记录在当前帧。然后再每个节点处可以调整节点的左右切线,包括free(自定义,使用besizer曲线手柄调整两个节点中间的曲线),constant(常量直线),linear(线性匀速增加)。
使用滚轮或F,A等快捷键可以缩放视图。

注意:unity5新增的generic体系下和legacy体系下制作出来的动画是不能够混用的。制作时一定要确认对象是哪种动画系统,制作完成后再采用相应的方法才能展示动画。如果是generic,就需要使用anivator组件,如果是legacy,就可以使用animation组件。两种动画文件虽然都是.anim,但是在unity中Inspector会显示不同的视图。

对于其他属性的使用方面,具体的情况会有不同的动画形式,这里不做太多测试。下面给出一个对alpha的动画设置的解释:在animation中添加属性吗material.color,因为透明度是通过材质体现的,将曲线设置为如下的形式的话,就会随时间有一个在60帧之后从1到0的变化,逐渐透明。
这里写图片描述
需要注意的是,光是修改alpha还不足以修改透明度,仍然需要使用带有alpha通道的shader,普通的着色器不足以体现透明度,所以要使用transparent族的shader。这样即可有一个淡出的动画效果。但是注意虽然不可见,但实际仍然在不停得进行渲染,消耗帧速率。

注:导入的动画是不能再编辑的,但是可以预览。要想修改,只能编辑其副本。

阅读全文
0 0
原创粉丝点击