位置: 编程技术 - 正文

我对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平面透明)

  • 国际税收协定的名词解释
  • 母公司给子公司注资需要什么手续
  • 施工单位临时设施搭建费属于
  • 一般纳税人拿到小规模的专票
  • 受托代销商品和受托代销商品款怎么列示
  • 外经证预交税怎么算
  • 设备维修劳务费税率
  • 企业的房屋是否能确认为存货?为什么?(简单描述即可)
  • 房租费可以摊销吗
  • 有了营业执照就可以买社保了吗
  • 从公司账户取现金
  • 资产减值准备如何转销
  • 小规模增值税报表模板
  • 待抵扣进项税额转出会计分录
  • 确认无法回收的应收账款会计分录
  • 主营业务收入需要交增值税吗
  • 优先股股息发放是啥意思
  • win10通知怎么打开
  • 个税代扣代缴手续费返还增值税税率
  • 默认网关不可用怎么修复
  • 生产企业出口退税计算
  • PHP:curl_share_setopt()的用法_cURL函数
  • php数组函数,选班长
  • 公允价值计量模式与账面价值计量模式的区别与联系
  • uniapp使用高德地图创建多边形
  • php chm
  • 拍卖有抵押的车子怎么处理
  • 准予在企业所得税税前扣除的有
  • 管理费用冲减其他应收款
  • 其他应收账款属于
  • Vision Transformer 模型详解
  • php实现分页查询
  • laravel框架实现cms的体会
  • thinkphp log
  • iframe嵌套页面点击里面的按钮
  • maven jni
  • Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
  • 增值税与消费税中关于包装物押金规定的异同点
  • 调整以前年度错账会计分录怎么做
  • 国家研发费用补助
  • 主营业务利润率标准
  • 未达起征点增值税申报表怎么填
  • 承兑汇票利息分录
  • 诉讼费可以退回私账嘛
  • 公司采购产品赠送给客户会计分录
  • 仓库管理办法有哪些
  • 原始股卖出需要缴税吗
  • 工程发票入账
  • 劳务派遣公司账务处理
  • 发票金额太大怎么办
  • 小规模纳税人从三万到十万
  • 简易征收预缴税款
  • 旅游业最新增值税政策
  • 什么是资产减值转回
  • sql server 2012r2
  • 硬盘安装windows11
  • centos安装nf_conntrack
  • webcamrt.exe - webcamrt 进程是什么意思
  • windows defender 图标怎么从任务栏删除
  • win10系统光驱
  • netddeclnt.exe - netddeclnt是什么进程 有什么用
  • win7隐藏文件怎么调出来
  • vim配置语法高亮
  • linux lvm2_member
  • linux filezilla使用教程
  • cocos设计模式
  • 批处理新建多个文件夹
  • python ar
  • 解决跨域的原理
  • unity 3d插件
  • jsonp怎么使用
  • python字典添加多个键值对
  • javascript面向对象编程指南第三版
  • Android中使用HttpURLConnection和HttpClient实现GET和POST请求访问网络
  • 如何搭建python项目架构
  • js 操作xml
  • python 管理系统
  • 工会经费税务代收现状
  • 南通国资委网站首页
  • 服务类发票 如何入账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设