位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享我对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平面透明)

  • 企业购车发票怎么查询
  • 文化服务费内容是什么
  • 购买方已抵扣怎么作废
  • 产品模板是固定的吗
  • 工会经费网上缴费
  • 银行存款利息收入要交增值税吗
  • 社会保险申报表中工资总额累计金额是什么意思
  • 连锁药店总部的首营资料
  • 分公司注销后账户不注销可以吗
  • 开具红字增值税专用发票的条件
  • 企业报废固定资产的净损失应确认为企业的费用
  • 小规模国税怎么报税
  • 多交的增值税怎么退
  • 管理费用对所得收入影响
  • 无形资产土地需要折旧吗
  • 冲减预提费用
  • 水利印花税计算公式
  • 个税返还交所得税吗
  • 国税开运输发票后地税怎么报税?
  • 增值税科目设置的凭证处理方面的特殊要求
  • 国税代开普通发票现需作废需要哪些资料?
  • 这些常用的发票知识,你都知道了吗?
  • 个人缴纳工会费可以在工资里面扣交吗
  • ukey抄报税全流程视频教程
  • 一般纳税人错开免税发票如何申报
  • 结转主营业务成本是含税还是不含税
  • 联营企业分得的利润应计入什么科目
  • 速动比率计算公式多少合适
  • 什么是保守型证券
  • 企业所得税申报表
  • 应收账款怎么做分录
  • win10电源高性能被删了
  • 微信小程序获取手机号
  • 附有销售退回条款的销售中,每一资产负债表日
  • pytorch model.module
  • 安博塞利国家公园简介
  • php curl_exec
  • 城建税10%用于教育哪方面
  • 运筹最优化方法有哪些
  • vue中的组件
  • 房屋租赁发票如何免税
  • 充电桩折旧年限是多少年
  • 差旅费津贴与差旅费补助
  • 给销售人员的返点怎么做账
  • 预算收入的核算
  • 固定资产清理是什么科目
  • 制造费用怎么登账
  • 住房补贴需要交个税吗
  • 经营活动的现金流量占全部现金流量的比重越大
  • 融资租赁业务的账务及涉税处理
  • 购买税控盘的账务处理
  • 房地产行业扣税标准
  • 外埠存款会计分录怎么写
  • 借调人员费用列支
  • 普票的销项负数怎么开
  • 用友t3财务通普及版如何开下年账
  • sql server real
  • win2008r2安装ftp
  • winxp关闭自动更新方法
  • ubuntu安装教程20.04 u盘
  • win7系统运行慢,如何提速
  • linux重复命令
  • win8怎么调整屏幕分辨率
  • 电脑系统脚本错误
  • 五步轻松实现zTree的使用
  • 批处理中如何判断当前文件中是否存在一个子目录
  • android_zh
  • 杨辉三角的代码
  • js如何将输入的数存到数组中
  • jquery序列化json
  • python 异步操作
  • javascript用处
  • 讲解JavaScript中for...in语句的使用方法
  • python 二分查找函数
  • 如何用python编写一个程序
  • [置顶]bilinovel
  • javascript 语言精粹(修订版)
  • python 在线运行环境
  • 捐赠纳税
  • 劳务派遣工为什么没年假了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号