文章目录

  • API 简介
  • Translate 的不同用法组合
    • 1)相对于自己坐标系下的z轴正方向移动(往面朝向移动)
    • 2)相对于世界坐标系下,自己的面朝向移动
    • 3)相对于世界坐标系下的z轴正方向移动
    • 4)相对于自己坐标系下,自己的面朝向移动

API 简介

Translate 方法是 Transform 类下的一个公共方法。一般可以用于物体的位移。

方法的第一个参数表示位移多少,一般用移动方向×速度 ×时间来表示。

方法的第二个参数表示相对于哪个坐标系进行移动。如果没有传第二个参数,默认是相对于自己的坐标系。

Translate 的不同用法组合

在介绍 Translate 方法的具体使用方式之前,我先画出世界坐标系和本地坐标系便于大家后续理解。

现在新建一个物体,假设它的世界坐标系是这样的:(刚刚创建的物体本地坐标系也和世界坐标系重合)

现在将物体绕 y 轴顺时针旋转一定角度。

现在黑色坐标系是世界坐标系,红色坐标系是物体旋转后的本地坐标系(因为是绕 y 轴转所以 y 轴不动,就不标红了)。


1)相对于自己坐标系下的z轴正方向移动(往面朝向移动)

transform.Translate(Vector3.forward*1*Time.deltaTime);

把物体当作人,那么就是朝人的前方移动。
这个比较好理解,就是在自己的坐标系下,往(0,0,1)的方向移动。在上图中就是沿着红色的 z 轴方向移动。

2)相对于世界坐标系下,自己的面朝向移动

transform.Translate(transform.forward*1*Time.deltaTime,Space.World);

效果和上面那种方法是相同的,都是沿着红色的 z 轴方向移动。

这里简单提一下 transform.forward,它代表了物体当前的面朝向(自身的z 轴指向),并且是相对于世界坐标系下的

也就是用自己坐标系下的(0,0,1)投影到世界坐标系下的各分量来表示 forward 得出的向量,以上面画的坐标系图为例,就是这样理解:

transform.forward 得出的向量就是(Zx,0,Zz),从黑色的世界坐标系来看就是沿着红色的 z 轴方向。

3)相对于世界坐标系下的z轴正方向移动

transform.Translate(Vector3.forward*1*Time.deltaTime,Space.World);

此时物体只会朝黑色的 z 轴移动。

4)相对于自己坐标系下,自己的面朝向移动

(一般不会这样用)

transform.Translate(transform.forward*1*Time.deltaTime,Space.Self);

transform.forward 得到的向量是相对于世界坐标系的,可这时候我们要求相对于自己的坐标系,那么必须将原来 forward 得到的向量转化成自己坐标系的一个向量。这时候物体的移动方向也就不会是自己的面朝向了。

最后的移动方向是蓝色的 z’ 轴。
以上面这张图为例,就是原先由黑色 z 轴转到红色 z 轴旋转了一定角度。然后再从红色 z 轴旋转相同的角度到蓝色 z’ 轴的方向(有点像将原来的世界坐标系旋转到红色的坐标系,那么原本相对于黑色坐标系的红色 z 轴就相应变成了相对于原本红色坐标系的蓝色 z’ 轴)。

总结
如果想实现物体沿自身方向移动,比如游戏中常见的人物移动,参考前两种方法就好了。尤其注意不要掉入最后一种方式的陷阱,因为有可能会写成 :

transform.Translate(transform.forward*1*Time.deltaTime);

那么它是无法实现我们正常想要看到的人物移动效果的。

Unity Translate方法使用指南相关推荐

  1. C#开发Unity游戏教程之Unity中方法的参数

    C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号"( )",有意义吗?看起来最 ...

  2. Unity电子游戏优化终极指南 The Ultimate Guide to Video Game Optimisation

    大小解压后:5.2G 含课程文件 时长9h 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 电子游戏优化终极指南 信息: 学会从你的Unity游戏开发项目中挤出每一帧表现 ...

  3. 在LINQ to SQL中使用Translate方法以及修改查询用SQL

    目前LINQ to SQL的资料不多--老赵的意思是,目前能找到的资料都难以摆脱"官方用法"的"阴影".LINQ to SQL最权威的资料自然是MSDN,但是M ...

  4. 《Python CookBook2》 第一章 文本 - 检查字符串中是否包含某字符集合中的字符 简化字符串的translate方法的使用...

    检查字符串中是否包含某字符集合中的字符  任务: 检查字符串中是否出现了某个字符集合中的字符 解决方案: 方案一: import itertoolsdef containAny(seq,aset):f ...

  5. CSS3中使用translate() 方法实现元素位置的移动

    translate() 方法 通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数: 实例 div { transform: t ...

  6. [css] 请描述下你对translate()方法的理解

    [css] 请描述下你对translate()方法的理解 Single length/percentage value一个长度值或百分比表示X轴和Y轴使用一样的值进行二维上的平移.等同于transla ...

  7. python中的translate_Python translate()方法

    描述 Python translate() 方法根据 maketrans() 方法给出的字符映射转换表转换字符串中的字符. 语法 translate() 方法语法: Python3中: S.trans ...

  8. Apollo 2.0 传感器标定方法 使用指南(官方)

    点击我:官方地址 Apollo 2.0 传感器标定方法使用指南 欢迎使用Apollo传感器标定服务.本文档提供在Apollo 2.0中新增的3项传感器标定程序的使用流程说明,分别为:相机到相机的标定, ...

  9. transform:translate()方法坐标详解

    定义:translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动. 但是如何移动呢?于是做了以下实验: 实验1.设置transform:translate(0px,0p ...

  10. 关于maketrans方法和translate方法一起使用的说明(从字符串中删除某些字符,请区别于replace)

    str.marktrans方法:生成一个dict表.对应翻译表(asc码格式), 如:t = str.maketrans('abcdefghi', '123456789',"abfgjk&q ...

最新文章

  1. Python,OpenCV骨架化图像并显示(skeletonize)
  2. 第三周项目三-输出星号图(1)
  3. 5G NR — 基于 GPS 的时间同步
  4. JavaScript数组方法大全(推荐)
  5. SQL Server2005 使用FOR XML选项进行字符串的串联聚合
  6. linux系统参加网络会议,在Deepin Linux系统下运行腾讯会议的方略
  7. DevOps“兵器”60样,你都会使哪几样?
  8. 「雕爷学编程」Arduino动手做(38)——joystick双轴摇杆模块
  9. 特斯拉副总裁陶琳:Model Y 本月开始陆续交付
  10. 物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建
  11. 经典Hello Word窗口表示,可视化编程入门。
  12. 2023年中国矿业大学会计专硕考研经验
  13. windows的终端命令
  14. 英语中名词复数读法(清辅音、浊辅音)
  15. python自动登录qq邮箱_python实现自动登录qq邮箱,写邮件并发送
  16. 钉钉开放平台API对接第三讲
  17. Activiti 介绍
  18. 我对 大内核锁BKL 的理解
  19. 《黑天鹅》black swan 高清迅雷下载 DVD BD高清中英双字
  20. 常用API类方法笔记整理1

热门文章

  1. 地图历史大反转!GISer如何查看历史影像
  2. 通过网线连接两台主机
  3. 关于简单的打地鼠游戏开发总结
  4. 基金指数温度怎么算_指数温度计算方法
  5. 豆瓣高分电影爬取项目,思路清晰,易上手,附免费代码下载
  6. STM32F103C8T6有128K的Flash
  7. 12306抢票使用教程
  8. 【强化学习】Policy Gradient(策略梯度)算法详解
  9. Python 黑板客爬虫闯关的第一关
  10. 为什么docker的端口映射需要开启ip转发功能?