Unity中使用的向量

1.获取A点到B点的长度:

Vector3 a(0,0,0)

Vec tor3 b(3,5,6)

Vector3 vector =new Vector3(a.x - b.x, a.y - b.y, a.z - b.z); 减法

Vector3 vector =new Vector3(a.x + b.x, a.y +b.y, a.z -+b.z);

2获取a和b的加法

Mathf.Sqrt(vector.x* vector.x + vector.y * vector.y + vector.z * vector.z); 

3,

判断目标在自己的前后方位可以使用下面的方法:

Vector3.Dot(transform.forward, target.position)

返回值为正时,目标在自己的前方,反之在自己的后方

4点积得到的是一个数值

所以我们可以通过点积得到两个向量之间的夹角。<a,b>= arccos(a·b / (|a|·|b|))

点积:c=Vector3.Dot(a,b); 

a,b夹角:Mathf.Acos( Vector3.Dot(a.normalized,b.normalized))*Mathf.Rad2Deg

Mathf.Acos()即数学中的arccos()函数。Mathf.Rad2Deg表示将弧度转化为角度

5叉积

叉积表示为Vector3.Cross(Vector3,Vector3)

//叉积的返回值

Vector3 c = Vector3.Cross(a, b); 

Vector3 d = Vector3.Cross(b, a); 

//向量a,b的夹角,得到的值为弧度,我转为角度

 float angle = Mathf.Asin(Vector3.Distance(Vector3.zero, Vector3.Cross(a.normalized, b.normalized))) 

6 已知A点坐标和角度,A点沿着某个已知的角度(q)以速度spend匀速移动t秒,求到达的点的坐标

首先可以求出斜边的长度:dis = speed*t

Vector3 c = newVector3(dis*Mathf.Sin(q),dis*Mathf.Cos(q),0

向量的知识点后期还会在更新,如有不对,请指教。

 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Unity 向量旋转 30 度的方法有很多, 你可以使用 Quaternion.Euler 函数或者 Matrix4x4.Rotate 函数来实现. 下面是示例代码: 1. 使用 Quaternion.Euler 函数: ``` Vector3 originalVector = new Vector3(1, 0, 0); Quaternion rotation = Quaternion.Euler(0, 30, 0); Vector3 rotatedVector = rotation * originalVector; ``` 2. 使用 Matrix4x4.Rotate 函数: ``` Vector3 originalVector = new Vector3(1, 0, 0); Matrix4x4 rotationMatrix = Matrix4x4.Rotate(Quaternion.Euler(0, 30, 0)); Vector3 rotatedVector = rotationMatrix.MultiplyVector(originalVector); ``` 在这两种方法, 第一种使用较为简单, 但第二种方法更加灵活, 可以对向量进行任意旋转. 你可以根据你的需要来选择使用哪种方法. ### 回答2: 在Unity,要将向量旋转30度,可以使用Quaterion.Euler()函数来实现。首先,我们需要将旋转角度转换为四元数(Quaternion),然后使用四元数将向量进行旋转。 具体操作如下: 1. 创建一个需要旋转的向量,例如Vector3 v = new Vector3(1, 0, 0),这个向量表示x轴正方向的单位向量。 2. 将旋转角度转换为四元数,例如Quaternion rotation = Quaternion.Euler(0, 30, 0),这里我们以绕y轴旋转30度为例。 3. 使用四元数将向量进行旋转,例如Vector3 rotatedVector = rotation * v。 4. 最后,rotatedVector就是旋转后的结果,表示了向量v绕y轴旋转30度后的方向。 需要注意的是,Unity的角度单位为度数(degree),而不是弧度(radian)。函数Quaternion.Euler()的参数为欧拉角(Euler angles),其分别表示了绕x、y、z轴旋转的角度。在这个例子,我们只需要绕y轴旋转30度,所以将y轴旋转角设为30,而x、z轴旋转角均设为0。 通过以上步骤,我们就可以在Unity向量旋转30度了。 ### 回答3: 在Unity,要将一个向量旋转30度,可以使用Quaternion.Euler函数来实现。Quaternion是Unity表示旋转的一种数据类型。 首先,需要将待旋转的向量转化为Quaternion。可以使用Quaternion.LookRotation函数将向量转化为Quaternion,将向量定义为目标旋转方向: Vector3 targetDirection = new Vector3(1, 0, 0); Quaternion targetRotation = Quaternion.LookRotation(targetDirection); 接下来,创建一个角度为30度的旋转Quaternion: float angle = 30f; Quaternion rotation = Quaternion.Euler(0f, angle, 0f); 然后,将待旋转的向量和旋转Quaternion相乘,得到旋转后的向量: Vector3 rotatedVector = rotation * targetRotation * Vector3.forward; 最后,将旋转后的向量应用到目标对象上: transform.rotation = Quaternion.LookRotation(rotatedVector); 这样,目标对象就会按照给定的向量旋转30度了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值