【Unity】旋转Vector3和Quaternion

旋转Vector3

计算一个Vector3绕指定轴旋转指定角度后所得到的向量。

/// <summary>
/// 计算一个Vector3绕指定轴旋转指定角度后所得到的向量。
/// </summary>
/// <param name="source">旋转前的源Vector3</param>
/// <param name="axis">旋转轴</param>
/// <param name="angle">旋转角度</param>
/// <returns>旋转后得到的新Vector3</returns>
public static Vector3 Rotate(this Vector3 source, Vector3 axis, float angle)
{Quaternion q = Quaternion.AngleAxis(angle, axis);// 旋转系数return q * source;// 返回目标点
}

旋转Quaternion

下面的方法可以获得GameObject绕指定轴旋转给定角度后的rotation,其返回值是一个四元数。注意该方法只计算原地旋转,即绕GameObject自身锚点旋转,不能设置其他旋转中心。

/// <summary>
/// 获得GameObject绕轴 axis 旋转 angle 角度后的rotation。
/// </summary>
/// <param name="source">旋转对象</param>
/// <param name="axis">旋转轴</param>
/// <param name="angle">旋转角度</param>
/// <param name="apply">是否将旋转应用到GameObject</param>
/// <returns>旋转后的rotation</returns>
public static Quaternion RotateRotation(this Transform source, Vector3 axis, float angle, bool apply = false)
{Vector3 forward = Quaternion.AngleAxis(angle, axis) * source.forward;Vector3 up = Quaternion.AngleAxis(angle, axis) * source.up;Quaternion result = Quaternion.LookRotation(forward, up);if (apply) { source.rotation = result; }return result;
}

【Unity】旋转Vector3和Quaternion相关推荐

  1. Unity旋转值Quaternion交换旋转轴

    最近项目上用到一款AR眼镜,其陀螺仪的给出的旋转值与预期有差异.如戴上眼镜左右转动头部时,视角却是沿着脸部朝前的轴旋转的.经过整理发现陀螺仪与Unity相机各轴正确对应关系如下: x(陀)->- ...

  2. unity之Matrix4x4.TRS(Vector3 pos, Quaternion q, Vector3 s)的原理

    为TRS的乘积  即T*R*S,具体如下 Matrix4x4.TRS == Matrix4x4.Translate(prev.position) * Matrix4x4.Rotate(prev.rot ...

  3. 【Unity】6.8 Quaternion类(四元数)

    分类:Unity.C#.VS2015 创建日期:2016-04-20 一.四元数的概念 四元数包含一个标量分量和-个三维向量分量,四元数Q可以记作: Q=[w,(x,y,z)] 在3D数学中使用单位四 ...

  4. Unity旋转之四元数(开关车门,第一人称控制器)

    在Unity中,常用的旋转方式有三种,分别是transform.Rotate(参数),欧拉角旋转,和今天我们要聊的四元数.虽然四元数理解起来不如欧拉角那么直观,但是它却能很好的避免了万向锁问题,而且在 ...

  5. Unity 之 Vector3 类简介

    1.Vector3三维向量:表示3D的向量和点.包含位置.方向(朝向).欧拉角的信息,也包含做些普通向量运算的函数. 2.Quaternion四元数,用于表示旋转,Unity内使用Quaternion ...

  6. Unity旋转问题的总结

    1.物体的直接旋转 transform.Rotate();这个函数是在当前状态下网某个方向旋转.并且这里可以设置为世界空间或者自身空间. transform.rotation;这里可以通过直接定义一个 ...

  7. unity 旋转欧拉角 万向锁 解释

    万向锁 一直困惑我很久....原因出在这里,我以为欧拉角旋转是以模型坐标(齐次坐标系)为旋转轴.问题就来了,无论旋转那个轴,其它两个轴也会相应的变化,下面看图: 根据上面的说明两个旋转面(圆圈)怎么会 ...

  8. Unity 旋转欧拉角及万向锁问题

    先说明unity 3D欧拉角的旋转顺序(父子关系)是y-x-z.即旋转y轴x和z轴都变,旋转x轴只有z轴变化,旋转z轴其它轴不变. 模型坐标系 又称物体坐标系. 与特定的物体关联,每个物体都有自己特定 ...

  9. Unity 旋转人物在设定的角度看向镜头(平滑转动)

    Head注释正前方 实现Unity 3D人物展示 Palyer看向正面 using AUCommunication; using ChangeParts; using UnityEngine; usi ...

最新文章

  1. VS2005相关----整理起始页面板
  2. python网络爬虫(14)使用Scrapy搭建爬虫框架
  3. ae抠像插件_AE抠像背景残留去除
  4. linux5.5 分辨率,Linux Kernel 5.5 正式发布
  5. js中call()方法和apply方法的使用
  6. c++字节对齐编译器指令#pragma
  7. npn三种波形失真_RF测试笔记:三阶交调失真概述及测试
  8. Excel-数据透视表
  9. 【番外】 使用@arcgis/cli脚手架进行ArcGIS JS API开发
  10. (Android) 如何使用HOOK实现动态注入以及自动化操作
  11. php中开通短信验证码,php利用云片网实现短信验证码功能的示例代码
  12. w7设置双显示器_win7系统设置双显示器多屏幕模式的操作方法
  13. 爱心树html演示,爱心树表白网页源码,jquery女神表白动画树特效
  14. 上半年晋升 P8 成功,还买了别墅!
  15. PayPal集成标准版案例(asp.net)关键源码
  16. Tex(文档排版工具)
  17. Laravel OAuth2 (一) ---简单获取用户信息
  18. 【知识分享】10M宽带非10M
  19. go build解决missing go.sum.entry
  20. 访问www.baidu.com的过程

热门文章

  1. 如何干净地卸载VMware
  2. 不同平台下移植x264
  3. 亚马逊云科技 Build On-使用 Amazon KVS 和 Amazon Rekognition 进行实时智能视觉识别
  4. 【调剂】航天科工四院四部2023年度自培研究生开始调剂啦!!!
  5. Pyhton之异常处理
  6. 分布式发号器架构设计
  7. 大类资产配置策略(一)恒定混合策略(Constant-mix Strategy)
  8. 【环信IM集成指南】Web端常见问题整理
  9. 黑客攻击第一步你知道是啥吗?
  10. navicat连接服务器mysql,mysql外网连接