Unity3d C#实现获取两个对象的夹角值(0--360)含源码

前言

项目中经常会遇到两个对象的夹角计算,主要还是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

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值