日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity三维向量变化为角度_UNITY3D两个物体相对位置、角度、相对速度方向

發(fā)布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity三维向量变化为角度_UNITY3D两个物体相对位置、角度、相对速度方向 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

using UnityEngine;

using System.Collections;

// 兩物體相對位置判斷、追蹤相對速度方向、朝向等計(jì)算方向以及角度

public class Direction : MonoBehaviour {

public Vector3 V1;

public Vector3 V2;

void Start()

{

// 為了方便理解便于計(jì)算,將向量在 Y 軸上的偏移量設(shè)置為 0

V1 = new Vector3( 3, 0, 4);

V2 = new Vector3( -4, 0, 3);

// 分別取 V1,V2 方向上的 單位向量(只是為了方便下面計(jì)算)

V1 = V1.normalized;

V2 = V2.normalized;

// 計(jì)算向量 V1,V2 點(diǎn)乘結(jié)果

// 即獲取 V1,V2夾角余弦 cos(夾角)

float direction = Vector3.Dot(V1, V2);

Debug.LogError("direction : " + direction);

// 夾角方向一般取(0 - 180 度)

// 如果取(0 - 360 度)

// direction >= 0 則夾角在 (0 - 90] 和 [270 - 360] 度之間

// direction < 0 則夾角在 (90 - 270) 度之間

// direction 無法確定具體角度

// 反余弦求V1,V2 夾角的弧度

float rad = Mathf.Acos(direction);

// 再將弧度轉(zhuǎn)換為角度

float deg = rad * Mathf.Rad2Deg;

// 得到的 deg 為 V1,V2 在(0 - 180 度的夾角)還無法確定V1,V2 的相對夾角

// deg 還是無法確定具體角度

// 計(jì)算向量 V1, V2 的叉乘結(jié)果

// 得到垂直于 V1, V2 的向量, Vector3(0, sin(V1,V2夾角), 0)

// 即 u.y = sin(V1,V2夾角)

Vector3 u = Vector3.Cross(V1, V2);

Debug.LogError("u.y : " + u.y);

// u.y >= 0 則夾角在 ( 0 - 180] 度之間

// u.y < 0 則夾角在 (180 - 360) 度之間

// u.y 依然無法確定具體角度

// 結(jié)合 direction >0 、 u.y > 0 和 deg 的值

// 即可確定 V2 相對于 V1 的夾角

if (u.y >= 0) // (0 - 180]

{

if (direction >= 0)

{

// (0 - 90] 度

}

else

{

// (90 - 180] 度

}

}

else // (180 - 360]

{

if (direction >= 0)

{

// [270 - 360]

// 360 + (-1)deg

}

else

{

// (180 - 270)

}

}

Debug.LogError(deg);

}

}

總結(jié)

以上是生活随笔為你收集整理的unity三维向量变化为角度_UNITY3D两个物体相对位置、角度、相对速度方向的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。