【Unity每日一记】方位辨别—向量的叉乘点乘结合


‍个人主页:@元宇宙-秩沅

‍ hallo 欢迎 点赞 收藏⭐ 留言 加关注✅!

本文由 秩沅 原创

‍ 收录于专栏unity每日一记

️推荐文章


⭐【Unityc#专题篇】之c#系统化大礼包】

⭐【unity数据持久化】数据管理类_PlayerPrfs

⭐【unity本站最全系列】unity常用API大全一篇文章足以
在这里插入图片描述


叉乘和点乘的检测应用


文章目录

    • ️推荐文章
    • 叉乘和点乘的检测应用
    • 叉乘和点乘的结合使用辨别对象的位置
    • 叉乘用来左右双向检测物体
    • ️系统路线学习点击跳转



叉乘和点乘的结合使用辨别对象的位置


【Unity每日一记】方位辨别—向量的叉乘点乘结合_第1张图片

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能:叉乘和点乘的应用
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class DotAndCross : MonoBehaviour
{
    public Transform A;
    public Transform B;

    //叉乘和点乘的结合可用来准确判断方位

    float dotVaule;
    Vector3  crossVaule;
    private void Update()
    {
        dotVaule = Vector3.Dot(A.forward, (B.position - A.position).normalized);
        crossVaule = Vector3.Cross(A.forward, (B.position - A.position).normalized);

        //叉乘和点乘的结合可用来准确判断方位
        if(dotVaule >0)
        {
            if(crossVaule.y > 0 ) //在左前方
            {

            }
            else                   //在右前方
            {

            }
        }
        else
        {
            if (crossVaule.y > 0) //在左后方
            {

            }
            else                   //在右后方
            {

            }
        }
    }

}


叉乘用来左右双向检测物体


【Unity每日一记】方位辨别—向量的叉乘点乘结合_第2张图片

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能:叉乘和点乘的应用
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class DotAndCross : MonoBehaviour
{
    public Transform A;
    public Transform B;

    //叉乘和点乘的结合可用来准确判断方位

    float dotVaule;
    Vector3  crossVaule;
    private void Update()
    {
        if(Vector3.Distance(A.position ,B.position )<=10)  //检测范围在10米之内
        {
            //左边小于40度右边小于60度的情况
            if(crossVaule.y  >= 0 && Vector3.Angle(A.forward ,(B.position -A.position ).normalized )<= 40 ||
                crossVaule.y < 0 && Vector3.Angle(A.forward, (B.position - A.position).normalized) <= 60)
            {

            }


        }
    }

}

️系统路线学习点击跳转


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞 收藏⭐ 留言 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


你可能感兴趣的:(#,Unity每日一记,unity,游戏引擎)