Unity 叉乘 vector3 四元数 和声音组件

博客主要围绕游戏开发展开,介绍了Vector3的插值运算、平滑阻尼运算等知识,阐述了四元数的概念、优缺点及相关API,还给出利用四元数控制坦克等案例。此外,讲解了AudioSource组件、音频格式及加载方式等音频相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 数学:a(x,y,z)  b(I,j,k)

               a X b  =  (y*k – z * j,-x*k + z *I,x*j-y*i)

  2.  

     1.     Vector3

    知识点:插值运算优化摄像机跟随;球形插值;平滑阻尼运算 Vector3.SmoothDamp;

    线性插值运算:

     

     

    球形插值运算:

     

     

    平滑阻尼运算:

     

     

    1. 2.     四元数

    知识点:什么是四元数;相对于欧拉角旋转的优缺点;四元数相关API;

    四元数是一个超复数 ;复数 = 实数 + 虚数    8 + 2i   I ^2 = -1

    四元数的概念:

     

     

    四元数的旋转角度赋值:

     

     

    使用Lerp控制物体旋转速度:

     

     

     

    四元数运算符重载:两个四元数相乘,是将两个四元数旋转角度叠加:

     

     

    案例:四元数控制坦克炮塔的旋转

     

     

    四元数与向量相乘运算符重载:

     

  3. 利用四元数旋转控制坦克

 

 

 

  1. 四元数和向量相乘:案例:类似于RotateAround功能;

 

 

 

 

 

 

  1. 四元数和向量相乘:案例:摄像机巡游

 

 

 

 

 

  1. 四元数案例:发射环形子弹、发射扇形子弹;

 

 

 

 

  1. 四元数和欧拉角旋转优缺点对比:

欧拉角旋转:优点:很容易理解,方便

                             缺点:会造成万向节死锁,而且不能避免;

四元数旋转:优点:不会万向节死锁;

                             缺点:难理解,计算复杂;比V3记录多一维数据;

 

 

  1. AudioSource组件

AudioSource:播放声音的组件,音源

Mute:静音

Play On Awake:自动播放;

Loop:循环;

Priority:优先级;

Volume:音量大小;

Pitch:音调高低;

 

  1. AudioListener:监听声音;一般放摄像机上,相当于是耳朵

重要:一个场景内只能有一个这个组件;

  1. AudioClip:

Unity支持的音频格式:

           .aiff:适用于较短声音片段;

           .wav: 适用于较短声音片段;

           .mp3、OGG:适合较长的音乐片段;

 

Force to mono:强制将多声道音频转换成单声道音频,占用大小会缩小;勾选Normalize之后会对声音有优化;

 

Load In Background:在后台加载声音;不阻塞主线程加载;

Load Type:Decompress On Load:以不压缩的形式存在内存,用的时候方便,但是占用内存高;

                    Compress in memory:以压缩的形式存在内存,

                    Streaming:以流的形式存在内存,使用时现解码。占用内存最小,增加了磁盘的读写和解压,超大文件才会使用;

 

Preload Audio Data:预加载音频资源;如果勾选进入场景就会马上加载;如果不勾选,第一次使用音频时才会加载进来;

 

Compression Format:PCM:音频以最高质量进行存储;

                                         Vorbis:相对来说压缩的更小;根据质量控制Quality选择;

                                         ADPCM:包含噪音,且会被多次播放的音频,脚步声、武器碰撞的声音;

 

 

  1. 场景相关:

 

 

 

 

 

转载于:https://www.cnblogs.com/DGJS/p/11049838.html

### Unity的实现与应用 在 Unity 中,(Cross Product)是一种用于计算两个向量的垂直向量的操作。的结果是一个与输入向量都垂直的新向量,并且其方向遵循右手定则[^4]。Unity 提供了内置的方法 `Vector3.Cross` 来实现这一功能,该方法接受两个 `Vector3` 类型的参数并返回一个 `Vector3` 类型的结果。 以下是一个简单的代码示例,展示如何在 Unity 中使用: ```csharp using UnityEngine; public class CrossProductExample : MonoBehaviour { void Start() { Vector3 vectorA = new Vector3(1, 0, 0); // 定义第一个向量 Vector3 vectorB = new Vector3(0, 1, 0); // 定义第二个向量 // 计算结果 Vector3 crossResult = Vector3.Cross(vectorA, vectorB); // 输出结果 Debug.Log("The cross product of " + vectorA + " and " + vectorB + " is " + crossResult); } } ``` #### 的应用场景 Unity 中有着广泛的应用,主要包括以下几个方面: 1. **法线计算**:在三维几何中,常用于计算三角形或平面的法线向量。例如,在构建自定义着色器或处理碰撞检测时,可以利用来生成法线向量[^5]。 2. **旋转轴确定**:当需要围绕某个轴进行旋转时,可以通过计算出旋转轴的方向。例如,通过两个向量得到一个垂直于它们的旋转轴[^6]。 3. **判断方向关系**:的结果可以用来判断两个向量之间的相对方向关系。如果结果向量的长度为零,则说明两个向量平行;否则,它们不平行[^7]。 4. **游戏逻辑中的应用**:例如,在实现角色跟随目标移动的过程中,可以使用来判断目标是否位于角色的左侧或右侧,从而调整角色的朝向[^8]。 #### 注意事项 - 的结果向量的长度等于两个输入向量长度的积与它们夹角正弦值的积。因此,输入向量的归一化会影响结果向量的长度。 - 仅适用于三维空间中的向量运算,二维空间中无法直接使用[^9]。 ### 示例:计算三角形法线 以下代码展示了如何使用计算三角形的法线向量: ```csharp using UnityEngine; public class TriangleNormalExample : MonoBehaviour { void Start() { Vector3 vertexA = new Vector3(0, 0, 0); // 三角形顶点 A Vector3 vertexB = new Vector3(1, 0, 0); // 三角形顶点 B Vector3 vertexC = new Vector3(0, 1, 0); // 三角形顶点 C // 计算两条边 Vector3 edge1 = vertexB - vertexA; Vector3 edge2 = vertexC - vertexA; // 计算法线 Vector3 normal = Vector3.Cross(edge1, edge2).normalized; // 输出法线 Debug.Log("Triangle normal: " + normal); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值