每日一学8——Unity向量

今天有小伙伴来问我向量在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;
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值