美文网首页
每日一学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