您当前的位置: 首页 >  unity

CoderZ1010

暂无认证

  • 2浏览

    0关注

    168博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity 通过向量点乘叉乘判断方位

CoderZ1010 发布时间:2021-10-10 16:34:21 ,浏览量:2

点积的计算方式为:a*b = |a| * |b| cos 其中|a|和|b|表示向量的模,表示两个向量的夹角。通过点积可以判断一个物体在另一个物体的前方还是后方。

using UnityEngine;

public class Foo : MonoBehaviour
{
    //创建两个物体A和B
    public Transform A;
    public Transform B;

    //点积结果
    private float dot;

    private void Update()
    {
        Vector3 direction = B.position - A.position;
        dot = Vector3.Dot(direction.normalized, A.forward);
    }

    private void OnGUI()
    {
        //点积结果大于0表示物体B在物体A的前方 否则在后方
        GUILayout.Label($"B在A的{(dot > 0 ? "前方" : "后方")}", "Box");
    }
}

叉积的性质:

        1.c垂直于a,c垂直于b,即向量c垂直于向量a、b所在的平面

        2.模长|c| = |a| * |b| sin

        3.满足右手法则。a * b != b * a 而 a * b = - b * a

可以使用叉积来判断一个物体在另一个物体的左方还是右方。

using UnityEngine;

public class Foo : MonoBehaviour
{
    public Transform A;
    public Transform B;

    private Vector3 cross;

    private void Update()
    {
        Vector3 direction = B.position - A.position;
        cross = Vector3.Cross(direction.normalized, A.forward);
    }

    private void OnGUI()
    {
        GUILayout.Label($"B在A的{(cross.y > 0 ? "左方" : "右方")}", "Box");
    }
}

关注
打赏
1653184800
查看更多评论
立即登录/注册

微信扫码登录

0.3350s