协程方法,Mathf、Input、Vector2、Vector3、Random、Quaternion、Rigidbody、Camera、Application、SceneManager类

本文详细介绍了Unity中的协程执行原理,以及Mathf、Input、Vector2、Vector3、Random、Quaternion、Rigidbody、Camera、Application、SceneManager等关键类的使用方法和常见功能,包括协程的暂停、数学运算、输入检测、向量操作、物理模拟、相机控制和场景管理。这些知识点对于Unity游戏开发至关重要。

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

一、协程
1、普通方法的执行顺序:从上到下,如果遇到函数的调用,Start函数会先等待调用函数的执行,结束后才会返回Start函数继续执行。
在这里插入图片描述
协程方法的执行顺序则是:从上到下的顺序,当Start函数中有协程方法的调用时,Start函数并不会等待函数的调用,则会继续进行,即协程方法则会与Start函数一起执行。 写成方法也可在运行的时候进行暂停。
1)返回值是IEnumerator
2) 返回参数的时候使用yield return null/0;
3)协程方法的调用用StartCoroutine(method())
执行协程方法和Start方法的先后顺序是不确定的,需要看CPU的调度问题
在这里插入图片描述
协程方法开启后,会继续运行下面的代码,不会等协程方法运行结束才继续运行
在这里插入图片描述
2、协程方法暂停时使用yield return new WaitForSeconds(3);暂停三秒
3、可以在任意地方开启协程方法
4、用协程方法实现动画的效果
1)
在这里插入图片描述
2)差值的方式实现
Color color=cube.GetComponent().material.color;
Color newColor=Color.Lerp(color,Color.red,0.02f); //差值,从当前颜色过渡到红色,每间隔0.02个距离
cube.GetComponent().material.color=newColor;
yield return new WaitForSeconds(0.02f); //暂停时间
在这里插入图片描述
5、参数可以是方法名,也可以是协程变量
1)StartCouroutine 启动协程
在这里插入图片描述
2)StopCouroutine 停止协程的调用
在这里插入图片描述
3)StopAllCouroutine 停止所有的协程
二、Mathf类
1、Static Variables
1)Deg2Rad 由度数变为弧度
2)Rad2Deg 由弧度转为度数
3)Epsilon 一个非常小的小数 ,可忽略不计 (anyValue+Epsilon=anyValue/anyValue-Epsilon=anyValue)
4)Infinity 一个无限大的数 (所有数字中都没有它大)
5)NegativeInfinity 一个无限小的数(所有数字中都没有它小)
6)PI 3.1415926358979…计算周长和面积
2、Static Functions
1)Abs 取绝对值
2)Ceil 向上取整(10.2返回11,-10.2返回-10

在C#中,要从两个三维向量(`Vector3`)表示的旋转前状态和旋转后的状态计算对应的四元数(`Quaternion`),你可以使用以下方法: 首先,假设我们有两个`Vector3`对象,分别代表初始方向`before`和最终方向`after`。这两个向量实际上是两个单位向量,因为它们表示的是旋转前后相同点的方向变化。 四元数通常由四个分量构成:实部w和三个虚部x、y、z。对于旋转,我们可以假设旋转是围绕原点发生的,所以不需要额外的信息来确定旋转中心。因此,我们可以找到一个四元数,使得其乘以原来的方向会得到新的方向。 ```csharp using UnityEngine; public class FindRotationQuaternion : MonoBehaviour { public Vector3 before; public Vector3 after; private Quaternion CalculateRotationQuaternion() { // 将向量转换为弧度 float dotProduct = Vector3.Dot(before, after); float angle = Mathf.Acos(dotProduct); // 获取夹角 // 如果两个向量同向或反向,则不需要旋转 if (angle近似于0) return Quaternion.identity; // 不做任何旋转(返回单位四元数) // 计算旋转轴 Vector3 axis = Vector3.Cross(before, after).normalized; // 根据右手螺旋规则构建四元数 return Quaternion.AngleAxis(angle, axis); } void Update() { Quaternion rotation = CalculateRotationQuaternion(); Debug.Log("Rotation Quaternion: " + rotation.ToString()); } } ``` 在这个代码示例中,我们首先计算了两个向量之间的夹角(`angle`),然后根据叉积找到旋转轴。接着,我们使用`AngleAxis`函数创建一个四元数,该函数接受旋转角度和轴。在`Update`方法中,我们实时获取并打印出这个四元数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值