U1L14-4——麦克风输入相关
U1L14-4——麦克风输入相关
麦克风输入
Unity 可以通过脚本来访问计算机的麦克风,并可通过直接录音来创建音频剪辑。Microphone 类提供了一个简单的 API 来查找可用的麦克风,查询麦克风的功能,以及开始和结束录制会话。
使用该类可通过连接的麦克风来录制 AudioClip。
可通过 devices 属性获取所连接麦克风的列表,然后使用 Start 和 End 函数开始或结束(使用一个可用设备)录制会话。
UnityEngine.Microphone - Unity 脚本 API
本课代码关键字
123456Microphone.devices //获取设备麦克风信息Microphone.Start(, , , ) //开始录制Microphone.End() //结束录制audioclip.channels //音频文件的声道数(channals)audioclip.samples //音频文件的剪辑长度(samples)audioclip.GetData(, ) ...
U1L14-3——代码控制音频源
U1L14-3——代码控制音频源
音频源详细参数介绍在这里:AudioSource,此处为如何在脚本里控制音频源
本章代码关键字
12345678AudioSource //音频源控件的类AudioClip //代表音频文件的类audioSource.isPlaying //检测音频源是否播放完毕的属性audioSource.Play() //播放音频源对应的音效audioSource.PlayDelayed() //延迟播放音频源对应的音效(填写延迟的秒数)audioSource.Stop() //停止音效(用Play()时,会接着从头开始放)audioSource.Pause() //暂停播放(用Play()时,会接着上次暂停的地方接着放)audioSource.UnPause() //停止暂停,恢复播放(和暂停后Play()效果是一样的)
检测音效是否播放完毕
如果希望某一个音效播放完毕后 想要做什么事情 ...
U1L14-2——音频源和音频监听脚本
U1L14-2——音频源和音频监听脚本
音频源
音频源 (Audio Source) 在场景中播放音频剪辑。剪辑的音源可通过音频监听器或者混音器播放。
音频源可播放任何类型的音频剪辑,可设置以 2D、3D 或混合 (SpatialBlend) 模式播放。
音频可在扬声器(立体声到 7.1)之间扩散 (Spread),并在 3D 和 2D 之间变换 (SpatialBlend)。可通衰减曲线控制传播距离。
此外,如果监听器位于一个或多个混响区内,则会将混响应用于音频源。
可对每个音频源应用单独的滤波器,以获得更丰富的音频体验。有关更多详细信息,请参阅音频效果。
AudioSource - 音频源
AudioClip - 声音剪辑文件(音频文件)
Output - 默认将直接输出到场景中的音频监听器,可以更改为输出到混音器
Mute - 静音开关
Bypass Effect - 开关滤波器效果
Bypass Listener Effects - 快速开关所有监听器
Bypass Reverb Zones - 快速开关所有混响区
Play On Aw ...
U1L14-1——音效文件导入
U1L14-1——音效文件导入
常用格式和导入
mp3、wav、ogg、aff、只需要将文件拖入Project面板即可。导入音频文件会创建音频剪辑,然后可以将音频剪辑拖动到音频源中,或通过脚本来使用音频剪辑
音频文件属性设置
音频文件属性设置
Force To Mono - 多声道转单声道
Normalize - 强制为单声道时,混合过程中被标准化
Load In Background - 在后台加载,不阻塞主线程
Ambisonic - 立体混响声
非常适合 360 度视频和 XR 应用程序
如果音频文件包含立体混响声编码的音频,请启用此选项、
LoadType - 加载类型
Decompress On Load - 不压缩形式存在内存,加载快,但是内存占用高,适用于小音效
Compress in memory - 压缩形式存在内存,加载慢,内存小,仅适用于较大音效文件
Streaming - 以流形式存在,使用时解码。内存占用最小,cpu消耗高,性能换内存
Preload Audio Data - 预加载音频,勾选后进入场景就加载,不勾选,第一 ...
U1L14——音效系统相关
U1L14——音效系统相关
音效系统
如果游戏缺少某种音频,无论是背景音乐还是其他音效,那么游戏是不完整的。Unity 的音频系统既灵活而又强大。
它可以导入大多数标准音频文件格式,精通于在3D 空间中播放声音,还可根据需要提供其他效果(比如回声和滤波)。
Unity 还可以通过用户机器上任何可用麦克风来录制音频,以便在游戏过程中进行使用或存储和传输。
音频概述 - Unity 手册
音频文件导入
U1L14-1——音效文件导入
音频源和音频监听脚本
U1L14-2——音频源和音频监听脚本
代码控制音频源
U1L14-3——代码控制音频源
麦克风输入相关
U1L14-4——麦克风输入相关
U1L13-5——物理系统之刚体加力
U1L13-5——物理系统之刚体加力
刚体加力
由于刚体组件会接管附加到的游戏对象的运动,因此不应试图借助脚本通过更改变换属性(如位置和旋转)来移动游戏对象。相反,应该施加__力__来推动游戏对象并让物理引擎计算结果
给刚体加力的目标就是:让其有一个速度 使其朝向某一个方向移动
本章代码关键字
1234567891011121314this.GetComponent<Rigidbody>() //获取刚体组件rigidBody.AddForce() //相对世界坐标 添加力rigidBody.AddRelativeForce() //相对本地坐标 添加力rigidBody.AddTorque() //相对世界坐标 添加扭矩力让其旋转rigidBody.AddRelativeTorque() //相对本地坐标 添加扭矩力让其旋转rigidBody.velocity //直接改变速度 速度方向是相对于世界坐标系rigidBody.AddExplosionForce() //模拟爆炸效果 只对挂载的脚本有这句语 ...
U1L13-4——物理系统之碰撞检测函数
U1L13-4——物理系统之碰撞检测函数
碰撞检测函数
碰撞检测涉及到RigidBody、Collider、Physic Material,
如何让两个游戏物体之间产生碰撞(至少一个刚体 和 两个碰撞器)
如何让两个物体之间碰撞时表现出不同效果(物理材质)
触发器的作用是 让两个物体碰撞没有物理效果,只进行碰撞处理
请先掌握这些内容的必要知识
能够让两个游戏物体之间产生碰撞
能够让两个物体碰撞时表现出不同效果
能够通过代码检测到碰撞产生的不同阶段
能够使用触发器让两个物体相互穿透
能够通过代码检测到触发产生的不同阶段
注意:碰撞和触发响应函数 属于 特殊的生命周期函数 ** 也是通过反射调用**
本章代码关键字
1234567891011void OnCollisionEnter(Collision collision) { } //碰撞触发接触时会自动执行这个函数(函数名,函数参数的类型不可以改动)collision.collider //碰撞到的对象碰撞器的信息collision.gameObject ...
U1L13-3——物理系统之物理材质
U1L13-3——物理系统之物理材质
物理材质(Physic Material)
物理材质 (Physic Material) 用于调整碰撞对象的摩擦力和反弹效果。
物理材质 - Unity 手册
创建物理材质
物理材质参数
Dynamic Friction - 已在移动时使用的摩擦力
通常为 0 到 1 之间的值。值为零就像冰一样,
值为 1 将使对象迅速静止(除非用很大的力或重力推动对象)
Static Friction - 当对象静止在表面上时使用的摩擦力。
通常为 0 到 1 之间的值。
值为零就像冰一样,值为 1 将导致很难让对象移动。
Bounciness - 表面的弹性如何?
值为 0 将不会反弹。值为 1 将在反弹时不产生任何能量损失,
预计会有一些近似值,但可能只会给模拟增加少量能量。
Friction Combine - 两个碰撞对象的摩擦力的组合方式。
Average - 对两个摩擦值求平均值。
Minimum - 使用两个值中的最小值。
Maximum - 使用两个值中的最大值。
Multiply - 两个摩擦值相乘。
B ...
U1L13-2——物理系统之碰撞器
U1L13-2——物理系统之碰撞器
碰撞器(Collider)
碰撞体组件可定义用于物理碰撞的游戏对象的形状。碰撞体是不可见的,其形状不需要与游戏对象的网格完全相同。网格的粗略近似方法通常更有效,在游戏运行过程中难以察觉。
最简单(并且也是处理器开销最低)的碰撞体是__原始__碰撞体类型。在 3D 中,这些碰撞体为盒型碰撞体、球形碰撞体和胶囊碰撞体。在 2D 中,可以使用 2D 盒型碰撞体 和 2D 圆形碰撞体。可以将任意数量的上述碰撞体添加到单个游戏对象以创建__复合碰撞体__。
碰撞体 - Unity 手册
这里还有另外一个:触发检测函数里的Collider
碰撞体参数和知识点
碰撞器知识点
知识回顾
碰撞产生的必要条件:两个物体都有碰撞器、至少一个物体有刚体
碰撞器表示物体的体积(形状)刚体会利用体积进行碰撞计算
模拟真实的碰撞效果,产生力的作用
3D碰撞器种类
盒状
球状
胶囊
网格
轮胎
地形
共同参数
Is Trigger - 是否是触发器
如果启用此属性
则该碰撞体将用于触发事件,并被物理引擎忽略
主要用于进行没有物理效果的碰 ...
U1L13-1——物理系统之刚体
U1L13-1——物理系统之刚体
刚体 ** (Rigidbody)**
刚体 (Rigidbody) 是实现游戏对象的物理行为的主要组件。连接刚体后,对象将立即响应重力。
如果还添加了一个或多个__碰撞体__组件,则游戏对象会因发生碰撞而移动。
由于刚体组件会接管附加到的游戏对象的运动,因此不应试图借助脚本通过更改变换属性(如位置和旋转)来移动游戏对象。
相反,应该施加力来推动游戏对象并让物理引擎计算结果。
在某些情况下,可能希望游戏对象具有刚体,并让刚体的运动摆脱物理引擎的控制。
例如,可能希望直接从脚本代码控制角色,但仍允许触发器检测角色(请参阅碰撞体主题下的_触发器_)。
脚本产生的这种非物理运动称为_运动学_运动。刚体组件有一个名为 Is Kinematic 的属性,
该属性可以让刚体摆脱物理引擎的控制,并允许通过脚本以运动学方式来移动刚体。
可以通过脚本来更改 Is Kinematic 的值,从而为某个对象开启和关闭物理引擎,但这会产生性能开销,应谨慎使用。
有关这些组件的设置和脚本选项的更多详细信息,请参阅刚体和 2D 刚体参考页面。
刚体概述 - Unity 手册
...