physicalMaterial_SoundGroup_3

声音是拟真环境的重要组成部分 , 对于刚刚接触 UDK 的新人而言 , 大都在场景、角色、动画、程序方面刻苦钻研 , 有意或无意的将声音放在后面解决… 不过… 话说推到后面的东西都容易烂尾么 &_&

本文在此简单介绍一下有关 物理材质属性 和 自定义声效组 方面的内容 , 以实现角色在不同材质表面上具有不同声效为实例进行展开.

上图是我最近在 UDK 中重建的一个场景 ( BNS PaoHwaRan Boss Stage ) , 玩家可行动区域的表面类型只有两种 , 分别为金属 ( Metal ) 和木质 ( Wood ) . 下面正式开始 ~

*注 : *物理材质属性 (Physical Material Property) 的详细介绍请参阅《UDN : 物理材质属性》

UDK 自带的 UTGame 中提供了一个可以直接使用的物理材质属性类 : UTPhysicalMaterialProperty , 该类继承自 PhysicalMaterialPropertyBase , 如果您要自定义一个物理材质属性类,也应继承于  PhysicalMaterialPropertyBase . 不过 , 本例中 UDK 自带的已经够用 , 这里就不再增加复杂性了 .

物理材质属性 用来赋予给 物理材质 :

点击蓝色的按钮可以向物理材质添加 物理材质属性 , 在 材质类型(Material Type) 中填入 材质类型名称 , 这个名称应该与接下提到的 声效组(SoundGroup) 相匹配 . UTGame 包中自带的 物理材质 都已经设置好 , 可以直接调用 .

接下来,需要将 物理材质 赋予 材质 , 基础操作 , 没什么需要说明的 :

最后是 声效组(SoundGroup) , 在写自己的 声效组 之前建议先看一下 UTPawnSoundGroup.uc , 自定义的 声效组 可继承此类 , 事半功倍 . 通常只需要更改一下代码的 defaultproperties 部分 , 直接上示例 :

class BSA_PawnSoundGroup extends UTPawnSoundGroup; DefaultProperties { // 这里的 MaterialType 和 物理材质中的 MaterialType 是相互对应的 FootstepSounds[0] =(MaterialType=Stone, Sound=SoundCue'BSA_Sounds.CueStep.Character_StoneStepCue') FootstepSounds[1] =(MaterialType=Dirt, Sound=SoundCue'BSA_Sounds.CueStep.Character_DirtStepCue') FootstepSounds[2] =(MaterialType=Energy, Sound=SoundCue'A_Character_Footsteps.FootSteps.A_Character_Footstep_EnergyCue') FootstepSounds[3] =(MaterialType=Flesh_Human, Sound=SoundCue'A_Character_Footsteps.FootSteps.A_Character_Footstep_FleshCue') FootstepSounds[4] =(MaterialType=Foliage, Sound=SoundCue'BSA_Sounds.CueStep.Character_GrassStepCue') FootstepSounds[5] =(MaterialType=Glass, Sound=SoundCue'A_Character_Footsteps.FootSteps.A_Character_Footstep_GlassPlateCue') FootstepSounds[6] =(MaterialType=Water, Sound=SoundCue'BSA_Sounds.CueStep.Character_WaterStepCue') FootstepSounds[7] =(MaterialType=ShallowWater, Sound=SoundCue'BSA_Sounds.CueStep.Character_ShallowWaterStepCue') FootstepSounds[8] =(MaterialType=Metal, Sound=SoundCue'BSA_Sounds.CueStep.Character_MetalStepCue') FootstepSounds[9] =(MaterialType=Snow, Sound=SoundCue'A_Character_Footsteps.FootSteps.A_Character_Footstep_SnowCue') FootstepSounds[10] =(MaterialType=Wood, Sound=SoundCue'BSA_Sounds.CueStep.Character_WoodStepCue') // 依此类推 , 以下省略 }

最后,不要忘记在您自己 Pawn 类中的 defaultproperties 部分添加 SoundGroupClass 属性 , 本文中应该写为 :

SoundGroupClass = class'BSA_Script.BSA_PawnSoundGroup'

如果不加这一行, 之前所做的一切工作都不会在游戏中体现出来, 如果您在调试时发现角色在地面上发出默认声效, 错误声效或无声等情况时. 请一定要检测此项.