位置: 编程技术 - 正文

我对Unity中Quaternion * Vector3的理解(unity quaternion.angle)

编辑:rootadmin

推荐整理分享我对Unity中Quaternion * Vector3的理解(unity quaternion.angle),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity相关问题,unity的,unity的,unity的quaternion,unity的ngui,unity的ngui,unity的quad,unity的quad,内容如对您有帮助,希望把文章链接给更多的朋友!

Quaternion * Vector3就是Vector3进行一次Quaternion 旋转。理论总是枯燥的,下面以实际项目代码为例,这是简化之后的部分项目代码:(c#)

代码的目的就是计算出当前帧人物应该移动的方向。提一下这是一个FPS项目,即第一人称射击类,当玩家按住向右移动时,人物的旋转是不变的,只是移动

方向相对于玩家是向右,理解这一点很重要。

那么为什么movingDirection就是当前帧人物应该移动的方向呢?

我们不妨假设directionVector=(1,0,1);这就表示玩家想让人物向右移动的同时向前移动,且移动量相同。

至于具体的移动量没有意义,我们随便加一个系数就可以调节移动快慢。

我们再假设transform.rotation对应的欧拉角度为(0,0,0);如图:(transform.rotation是Quateration类型,很抽象,对应的欧拉角度则非常直观)

这时,人物相对于世界坐标系没有任何旋转,再由假设的directionVector=(1,0,1);即当玩家同时按下向前和向右移动的按键时,人物移动的方向向量将是(1,0,1);

又我们已经假设transform.rotation对应的欧拉角度为(0,0,0);即没有旋转,

我对Unity中Quaternion * Vector3的理解(unity quaternion.angle)

则transform.rotation*directionVector得到的结果还是(1,0,1);

这是最简单的情形,接下来,我们假设transform.rotation对应的欧拉角度为(0,,0);即当前人物相对于世界坐标系是有一个度旋转量的,

由假设的directionVector=(1,0,1);即当玩家同时按下向前和向右移动的按键时,人物将向正右前方向移动,显然我们直观判断人物移动的方向向量应该是(1,0,0);

那么怎么计算呢?由我们假设的transform.rotation对应的欧拉角度为(0,,0);

所以ransform.rotation*directionVector就是让directionVector绕Y轴旋转度,(1,0,1)绕Y轴旋转度不就是(1,0,0)吗?

由这两个特殊的角度,现在大家应该可以理解ransform.rotation*directionVector就是当前帧人物应该移动的方向了吧。

最后,之所以说这是简化代码,实际项目中代码不可能是这么写的,

Vector3 directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

Vector3 movingDirection = transform.rotation * directionVector;

大家可能想到了还应该有速度调节系数,此外,由于directionVector与GetAxis是线性关系,那么效果会很生硬,玩家只要一按下方向键人物就会移动,

这种方式用来对付CF这种网游还可以(网游要的是灵敏,不是真实),而玩过孤岛惊魂,使命召唤等的伙伴们就知道,人物移动有一个很明显的加速过程,

这个过程要求directionVector与GetAxis呈类&#;Y=X*X这样的幂次关系,如:

Vector3 directionVector = new Vector3(Input.GetAxis("Horizontal")*Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")*Input.GetAxis("Vertical"));

当然实际项目中还有其他细节需要丰富,再次只是抛砖引玉,给小伙伴们提供借鉴和灵感。

unity 2D 透明遮罩 简单实现 大致需要用到的东西:shader材质深度摄像机unity实现2D遮罩找了许多的解决方法,这个是我采取的一种方法,比较便捷,但不一定是最好的主要想实现的

【Unity】A*算法的GUI实现 前言A*算法是常用的游戏算法之一,也是初学者比较难掌握的一个算法。本文在Unity中以GUI的方式形象的再现了A*算法的详细步骤,包括地图的搜索、FGH

【Unity】Mesh网格编程(一)正二十面体 前言Mesh类是Unity用脚本创建和修改3D模型的重要脚本类。本文以自定义编译器菜单的方式,实现了Unity创建正二十面体的功能扩展。博文首发:

标签: unity quaternion.angle

本文链接地址:https://www.jiuchutong.com/biancheng/380221.html 转载请保留说明!

上一篇:unity3d android 插件

下一篇:unity 2D 透明遮罩 简单实现(unity平面透明)

  • 丢失增值税专用发票最新规定
  • 出口退税进项税额转出怎么申报
  • 印花税购销合同计税金额怎么算
  • 小规模和纳税人一般怎么选择
  • 税务机关六位地区编码是什么
  • 税费误差财务怎么调整
  • 货物的运输费用怎么算
  • 核定征收个体户个人经营所得税
  • 企业用于存货的支出
  • 采购运输管理系统
  • 软件开发服务费可以计入无形资产吗
  • 增值税普通发票几个点
  • 收到以前年度退所得税分录
  • 工业企业水电费需要计提吗
  • 进项票已认证忘记开票
  • 营改增后增值税科目
  • 财务费用为负数怎么结转
  • 两处拿工资的缴税问题
  • 红字发票做进项税额转出是做借方红字吗
  • 一般纳税人简易计税会计分录
  • 企业购入用于捐赠的物品
  • 会计档案的保管期限是从什么算起
  • 小型微利企业怎么认定最新标准
  • 苹果macOS Big Sur 11.0.1全新系统壁纸
  • 电商快递费怎么做账
  • 注销企业基本户需要先注销一般户吗
  • 保险税前扣除比例是多少
  • 家里有蟑螂怎么找到窝
  • elementui ts
  • 库房存货标准
  • 150m迷你型无线路由器怎么用
  • vue.js mvvm
  • 转入固定资产清理会计科目
  • 出售银行承兑汇票
  • css deep深度选择器
  • css动画效果代码
  • 最新版本TVBox配置地址
  • 期末结转主营业务收入负数
  • 2022年最新公务员职务职级对照表
  • 农民专业合作社是什么性质
  • About BitRock
  • 计提工会经费的工资总额包括哪些
  • 旅游大巴应怎么买票
  • 劳务税能退税吗
  • 代理记账公司账务很乱能接吗
  • 现金流量表利息支出
  • 生产工人工资结算表格模板
  • 可抵扣的进项税额要减去进项转出吗
  • 免税收入就是不征收收入,均属于税收优惠范畴
  • 购买空调报销写什么科目的
  • 付给其他公司的服务费怎么记账
  • 制造费用需要本年累计吗
  • 预收账款科目账龄怎么算
  • 根据《增值税暂行条例》的规定,适用9
  • 弥补上年亏损所需的资金
  • 进口增值税当月可以抵扣吗
  • 财务软件可以直接做管理费用吗?
  • mybatis分页插件的原理
  • windows自带邮件应用
  • ubuntu怎么更改用户名
  • apple watch手表怎么看型号
  • win8系统打开软件闪退
  • bootcamp安装windows一直小白杠
  • SpySub.exe - SpySub是什么进程
  • 苹果电脑怎么下魔兽争霸
  • keyemain.exe是什么
  • pc guide
  • VS2013 OpenGL MFC 编程问题
  • perl中sub
  • cocos3.0
  • js 获取ua
  • css固定在底部
  • android 蓝牙 驱动 适配 sdio rk
  • 删除命令del
  • 基于单片机的毕业设计题目
  • jquery根据name
  • 税务函调回来几天可以退税
  • 河北省云办税厅
  • 以出让方式取得的土地
  • 发票红冲产生费用吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设