Unity关于旋转的一些记录

1.有一个这样的需求,根据两个向量,判断之间的夹角,并且确定其方向是顺时针还是逆时针的~

下面上解决代码:

 Vector3 toV3 = new Vector3(playerCamera.transform.forward.x, 0, playerCamera.transform.forward.z);
        float angle = Vector3.Angle(transform.forward, toV3); //求出两向量之间的夹角
        Vector3 normal = Vector3.Cross(transform.forward, toV3);//叉乘求出法线向量,判断法线的正负值可以确定顺时针或者逆时针

        if (Mathf.Abs(transform.eulerAngles.y - playerCamera.transform.eulerAngles.y) <= 5)
        {
            transform.rotation = Quaternion.Euler(0, playerCamera.transform.eulerAngles.y, 0);
        }
        else
        {
            angle = normal.y > 0 ? angle : angle * -1;
            transform.rotation = Quaternion.Euler(0, transform.eulerAngles.y + angle * fRotationSpeed * Time.deltaTime, 0);
        }

关于api和思路的讲解:
Vector3.Angle:计算两个向量之间的夹角(重点:方向)
Vector3.Cross:叉乘求出两个向量之间的法线,返回值为Vector3类型,然后判断这个返回值的Y的正负即可。(重点:方向)
正数:顺时针 、 负数:逆时针

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Unity3D中, Vector3.Dot 表示求两个向量的点积; Vector3.Cross 表示求两个向量的叉...
    段然丶阅读 852评论 0 0
  • Unity中的欧拉角和四元数 笔记主要参考以下的博文 Unity中的欧拉旋转 - Andrew的游戏世界 - CS...
    一只浩阅读 1,782评论 0 0
  • 向量是2D、3D数学研究的标准工具,在3D游戏中向量是基础。 一、向量 1、向量的数学定义 向量就是一个数字列表,...
    passiony阅读 2,085评论 0 1
  • Unity工程结构: Assets文件夹:存储工程所需的所有资源文件 Library:工程所需要的所有资源库(类库...
    斗魁阅读 2,124评论 0 3
  • 今天是二零一八年十月六号,农历八月二十七。我每次在写这些毫无意义的东西时,都会在开头就写上时间。不知道为什...
    山人自无妙计阅读 221评论 0 1

友情链接更多精彩内容