位置: 编程技术 - 正文

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

  • 工资完整的账务处理
  • 机票抵扣进项税怎么填申报表
  • 生产成本科目期末余额反映的是
  • 营改增后为什么利息要提供发票吗
  • 长期借调人员差旅费是谁的责任
  • 预缴税款可以下调吗
  • 差额征税扣除额是什么意思
  • 工会经费计入成本费用
  • 5附加税政策优惠退税需要哪些资料
  • 佣金的发票
  • 职工年平均工资是什么意思
  • 2019年计算机软件行业人均年工资
  • 工厂筹建期间购房合法吗
  • 法人资本个人资本
  • 企业零申报教学视频
  • 预充值发票可以列支吗?
  • 利息支出手续费
  • 增值税有没有定额抵扣
  • 购入材料的应付账款包括商业折扣吗
  • 物业公司营改增后收入的确认
  • 扣缴上月税费会计分录
  • 员工吃饭发票的怎么报销
  • 收到融资租赁利息专票进项税额要转出吗
  • 手机超过1万元有必要买吗
  • 不抵扣的发票是什么发票
  • 劳务公司发放农民工工资要开发票吗?
  • 企业所得税调增调减项目比例
  • 企业接到银行收账通知
  • 招投标公司需要什么条件
  • php axios
  • vue浏览器版本
  • 企业所得税的基本税率是多少?
  • 企业利润分配的通常去向包括
  • html和css介绍
  • 自动生成尺寸
  • 可用保证金余额为负
  • spring boot 2.3.0
  • 文件不小心删除了怎么恢复
  • 2021前端面试大全
  • 保税进料加工企业
  • 通过点击office文件按钮可以选择设置系统选项
  • 旅游服务发票可以抵税吗
  • 金税三期可以申报个税吗
  • 农药免税政策文件有哪些
  • 不计入法定期间的情形包括
  • 商业承兑汇票如何查询
  • 公司股东会和董事会
  • php clone函数
  • 临时工工资账务处理该怎么进行
  • 成本费用利润率越高越好吗
  • 累计预扣法税率表
  • 分期收款销售的特点是描述正确的是
  • 出口收入没有及时申报怎么处罚
  • 零申报企业年报资产状况信息怎么填
  • 取得异常凭证企业所得税调整
  • 支付宝电子发票怎么开
  • 劳务报酬如何记账
  • 出口为什么没有增值税
  • 如何开发票?
  • 营改增后被挂靠的企业如何做账?
  • 侧边栏应用
  • WIN10系统硬盘设置
  • 服务器中的ocp卡全称是什么
  • window8更新10
  • win8系统更新在哪里
  • mac电脑安装软件未受信任
  • win7系统怎么调出运行窗口
  • win7系统检测不到u盘
  • Android游戏开发读后感
  • dos批处理实例
  • vs2019怎么用gets
  • unity程序开发
  • android遇到的难题,怎么解决的
  • js轮播图视频教程
  • bootstrap导航栏怎么居中
  • 安卓系统手机图片文件夹在哪里
  • 法人变更税务登记表怎么填
  • 广东省国家税务局电子发票系统,网络设置
  • 太原公安分局有几个
  • 药店开给个人的增值税发票是什么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设