簡體   English   中英

如何統一將方向 Vector3 向上旋轉一個角度

[英]how do I rotate a direction Vector3 upwards by an angle in unity

這是我的方向向量new Vector3(target.transform.position.x - projectile.position.x, 0, target.transform.position.z - projectile.position.z).normalized

我嘗試將它乘以Quaternion.AngleAxis(45, Vector3.up)但這根本行不通所有其他方向,如 Vector3.left、right 等,也無濟於事

我唯一能觀察到的是當我移動目標或射彈時角度的變化方式

你很接近。 使用叉積得到你需要的軸,在AngleAxis中使用它,然后最后將該旋轉應用到你的起始方向:

Vector3 RotateTowardsUp(Vector3 start, float angle)
{
    // if you know start will always be normalized, can skip this step
    start.Normalize();

    Vector3 axis = Vector3.Cross(start, Vector3.up);

    // handle case where start is colinear with up
    if (axis == Vector3.zero) axis = Vector3.right;

    return Quaternion.AngleAxis(angle, axis) * start;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM