Unity Vector

public Vector3(float x , float y , float z);

靜態屬性 Vector.XXX
forward(0 , 0 , 1) 向前
back(0 , 0 , -1)向後
up(0 , 1 , 0)向上
down(0 , -1 , 0)向下
right(1 , 0 , 0)右
left(-1 , 0 , 0)左

屬性
magnitude 取得長度
sqrMagnitude. 取得長度不開平方根,單純用於比較用
normalize 將向量規格化,只留下方向

靜態方法
Cross 得到向量 兩物體之間的外積,常用於計算是在物體左邊右邊
Dot 得到浮點數 兩物體之間向量乘,常用於計算A物體在B物體前面還是後面

//本地座標轉換世界座標
Vector forward = transform.TransformDirection(vector3.forward);
//計算兩個向量方向
Vector toOther = target.position - transform.position;

float dot = vector3.Dot(forward , toOther); //dot = 0平行 > 0 前方 < 0 後方
Vector cross = Vector.Cross(forward , toOther); //cross.y (用Y軸判斷) = 0 重疊 > 0右方 < 0 左方

-------------------------------------------

public float Speed;
public Vector3 targetPoint; //目標移動 可以調整

Vector currentPoint = transform.position;

float SpeedDelta = Time.deltaTime * Speed; //Speed 從外部輸入

//最後不會超過TargetPoint
transform.position = Vector.MoveTowards(currentPoint , targetPoint , SpeedDelta);

留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

DDD With MVC