美文网首页
每日一学8——Unity向量

每日一学8——Unity向量

作者: ShawnWeasley | 来源:发表于2020-07-06 19:41 被阅读0次

今天有小伙伴来问我向量在Unity中的用法,在此记录一下。

需求:空间中有两点A(x1,y1,z1),B(x2,y2,z2),求点A向B移动m距离的点C的坐标。

如果不会向量的小伙伴们可能需要算出AB的距离,再乘以比例的方法来获得C点的坐标(小伙伴甚至想用三角函数算)。
无疑以上的方法都有点呆,效率也会比较低,再多其他的需求更加无法实现。
其实用向量很简单,直接获取AB的向量取单位向量再乘一下距离就行了。

using UnityEngine;
using UnityEngine.Events;

public class Main : MonoBehaviour
{
    public Vector3 A;
    public Vector3 B;
    public float m;//移动距离

    void Start()
    {
        Vector3 AB = B - A;//获得AB的向量
        Vector3 normalized = AB.normalized;//直接获取单位向量
        Vector3 C = normalized * m;
    }
}

需求:空间中有两点A(x1,y1,z1),B(x2,y2,z2),求点A向以AB为轴顺时针90度方向(垂直于AB),移动m距离的点C的坐标。

可以看到这里多了一个角度的条件,其实官方也有API可以直接用:

using UnityEngine;
using UnityEngine.Events;

public class Main : MonoBehaviour
{
    public Vector3 A;
    public Vector3 B;
    public float m;//移动距离

    void Start()
    {
        Vector3 AB = B - A;//获得AB的向量
        Vector3 normalized = AB.normalized;//直接获取单位向量
        // Quaternion.AngleAxis第一个参数是角度,第二个是方向,最后乘以向量获得新的向量
        Vector3 fixNormalized = Quaternion.AngleAxis(90, new Vector3(0, 90, 0)) * normalized;
        Vector3 C = normalized * m;
    }
}

这样就能很方便地算出位移了~

相关文章

网友评论

      本文标题:每日一学8——Unity向量

      本文链接:https://www.haomeiwen.com/subject/dhmgqktx.html