前言

项目中经常会遇到两个对象的夹角计算,主要还是vector3.Angle的计算,有个问题是这个返回只在180之下。通过一番查阅资料这里将整理的demo分享一下。

直观效果

在这里插入图片描述

实现过程

搭建场景

在这里插入图片描述

对象

新建了两个对象,一个正方体和一个球体,主要就是计算正方体前向和正方体到球体方向的夹角。

TextMesh用于显示计算的夹角值。

划线对象

为了更直观的看到夹角,用两根线来连接出夹角。

编码

获取夹角

求出两个向量的角度

 float angle = Vector3.Angle(from, to);     

from正方体的前向
to 正方体到球体的向量

转换夹角值

 叉乘求法线向量
        Vector3 nordir = Vector3.Cross(from, to);     
 点乘求出相似度
        float dot = Vector3.Dot(nordir, Vector3.down);  

转换值

 if (dot < 0)
 {
  angle *= -1;
  angle += 360;
 }

显示夹角

 angleText.text = angle.ToString("F3");

绘制夹角

SetPosition(0, transform.position);
SetPosition(0, transform.position);
SetPosition(1, transform.forward*5);
SetPosition(1, OtherObj.position);

项目源码

https://download.csdn.net/download/qq_33789001/16671547

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐