Unity3D LDB游戏工作室 教程(三)

Unity3D LDB游戏工作室 教程(三)

向量

向量加法:
A(x1y1)+b(x2y2)=(x1+x2,y1+y2)
也可以根据平行四边形定理:
扩展成一个平行四边形,对角线便是向量。

向量减法:
A(x1y1)-b(x2y2)=(x1-x2,y1-y2)
或者从被减的向量到减的向量画一条线,这条线就是结果向量。

向量乘法:
A(x1y1)2=(x12,y1*2)
乘法不改变方向,只改变向量的长度。

向量点乘:
a . b =x1x2+y1y2 =n=|a||b|cosθ
tips:|a|和|b|就是向量的模,θ代表这两条向量的夹角
可以先把a,b转换为单位向量(长度为1),所以|a||b|cosθ就能推导出等于n=cosθ,那么求出夹角就很简单了(unity有内置函数可以直接算出θ)

Vector3

Unity中的向量通常使用Vector3结构来表示,它包含三个分量:x、y和z,分别表示三维空间中的坐标。除此之外,也提供Vector2(二维向量),Vector4(四维向量)来处理不同维度空间。

Vector3常用于控制GameObject的位置、旋转和缩放,以及进行移动、旋转和转换操作。
创建一个Vector3对象

Vector3 position = new Vector3(1.0f, 2.0f, 3.0f);
//修改其中分量值
position.x=2.0f
position.y=3.0f
position.z=4.0f

访问该向量的x,y,z分量

float x = position.x;
float y = position.y;
float z = position.z;

向量加法

Vector3 a = new Vector3(1.0f, 2.0f, 3.0f);
Vector3 b = new Vector3(4.0f, 5.0f, 6.0f);
Vector3 result = a + b;

点乘,叉乘,归一化,两点之间距离等函数

//初始化一些内置初始化向量方法
v1=Vector3.zero;
v2=Vector3.one;
v3=Vector3.forward;
//计算两个向量夹角
Vector3.Angle(v1,v2);
//点乘
float dotProduct = Vector3.Dot(a, b);
//叉乘
Vector3.Cross(v1, v2);
//归一化
1.Vector3 normalizedVector = Vector3.Normalize(v1);
2.v1.normalized
//计算两点之间距离
float distance = Vector3.Distance(a,b);
//插值
Vector3.Lerp(v1,v2,0.5f)
//向量的模
v1.magnitude

欧拉角和四元数

欧拉角使用三个角度(通常是绕X、Y、Z轴的旋转角度)来表示三维空间中的旋转。但在某些情况下(如连续旋转时)会产生万向节锁(Gimbal Lock)问题,使得两个旋转轴对齐,失去一个自由度。

四元数是一种更复杂但更强大的旋转表示方法,使用四个数值(x, y, z, w)表示旋转。

欧拉角,四元数的基本函数

//初始化欧拉角
Vector3 rotate=new Vector3(0,30,0)
//初始化四元数
Quaternion quaternion= new Quaternion(0,0,0,0)
//创建一个参数都为0无旋转的四元数
Quaternion quaternion=Quaternion.identity;
//将欧拉角转换为四元数
quaternion=Quaternion.Euler(rotate);
//看向一个位置从而旋转
quaternion=Quaternion.LookRotation(new Vector3(0,0,0));
//四元数转换为欧拉角
rotate=quaternion.eulerAngles;

Debug方法

debug方法

//打印普通信息
Debug.Log("test1");
//输出警告
Debug.LogWarning("test2");
//输出错误
Debug.LogError("test3");
//绘制线 DrawLine的三个参数分别代表起点,终点,和颜色,需要自定义
Debug.DrawLine(Vector3.zero,Vector3.one,Color.blue);
//绘制射线 DrawRay的第一个参数是起点,第二个参数是物体到该参数的射线
Debug.DrawRay(new Vector3(1,0,0), new Vector3(1,1,0),Color.red);

结语

本文介绍了Unity常用的一些数学知识和脚本函数以及常用的debug方法。欢迎评论区留言,也欢迎有疑问的地方随时私信提问~

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值