Unity Translate方法使用指南
文章目录
- 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方法使用指南相关推荐
- C#开发Unity游戏教程之Unity中方法的参数
C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号"( )",有意义吗?看起来最 ...
- Unity电子游戏优化终极指南 The Ultimate Guide to Video Game Optimisation
大小解压后:5.2G 含课程文件 时长9h 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 电子游戏优化终极指南 信息: 学会从你的Unity游戏开发项目中挤出每一帧表现 ...
- 在LINQ to SQL中使用Translate方法以及修改查询用SQL
目前LINQ to SQL的资料不多--老赵的意思是,目前能找到的资料都难以摆脱"官方用法"的"阴影".LINQ to SQL最权威的资料自然是MSDN,但是M ...
- 《Python CookBook2》 第一章 文本 - 检查字符串中是否包含某字符集合中的字符 简化字符串的translate方法的使用...
检查字符串中是否包含某字符集合中的字符 任务: 检查字符串中是否出现了某个字符集合中的字符 解决方案: 方案一: import itertoolsdef containAny(seq,aset):f ...
- CSS3中使用translate() 方法实现元素位置的移动
translate() 方法 通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数: 实例 div { transform: t ...
- [css] 请描述下你对translate()方法的理解
[css] 请描述下你对translate()方法的理解 Single length/percentage value一个长度值或百分比表示X轴和Y轴使用一样的值进行二维上的平移.等同于transla ...
- python中的translate_Python translate()方法
描述 Python translate() 方法根据 maketrans() 方法给出的字符映射转换表转换字符串中的字符. 语法 translate() 方法语法: Python3中: S.trans ...
- Apollo 2.0 传感器标定方法 使用指南(官方)
点击我:官方地址 Apollo 2.0 传感器标定方法使用指南 欢迎使用Apollo传感器标定服务.本文档提供在Apollo 2.0中新增的3项传感器标定程序的使用流程说明,分别为:相机到相机的标定, ...
- transform:translate()方法坐标详解
定义:translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动. 但是如何移动呢?于是做了以下实验: 实验1.设置transform:translate(0px,0p ...
- 关于maketrans方法和translate方法一起使用的说明(从字符串中删除某些字符,请区别于replace)
str.marktrans方法:生成一个dict表.对应翻译表(asc码格式), 如:t = str.maketrans('abcdefghi', '123456789',"abfgjk&q ...
最新文章
- Python,OpenCV骨架化图像并显示(skeletonize)
- 第三周项目三-输出星号图(1)
- 5G NR — 基于 GPS 的时间同步
- JavaScript数组方法大全(推荐)
- SQL Server2005 使用FOR XML选项进行字符串的串联聚合
- linux系统参加网络会议,在Deepin Linux系统下运行腾讯会议的方略
- DevOps“兵器”60样,你都会使哪几样?
- 「雕爷学编程」Arduino动手做(38)——joystick双轴摇杆模块
- 特斯拉副总裁陶琳:Model Y 本月开始陆续交付
- 物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建
- 经典Hello Word窗口表示,可视化编程入门。
- 2023年中国矿业大学会计专硕考研经验
- windows的终端命令
- 英语中名词复数读法(清辅音、浊辅音)
- python自动登录qq邮箱_python实现自动登录qq邮箱,写邮件并发送
- 钉钉开放平台API对接第三讲
- Activiti 介绍
- 我对 大内核锁BKL 的理解
- 《黑天鹅》black swan 高清迅雷下载 DVD BD高清中英双字
- 常用API类方法笔记整理1