关于Unity中物体分别在本地和世界坐标系对应方向的移动

Posted 杭者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Unity中物体分别在本地和世界坐标系对应方向的移动相关的知识,希望对你有一定的参考价值。

方向

Vector3可以定义以世界坐标轴为参考的三维矢量,Vector3.forward,Vector3.up,Vector3.right方别对应物体世界坐标系的Z,Y,X轴方向的单位向量,或者叫三维单位方向向量,是矢量

this.transform.forward,this.transform.up,this.transform.right分别对应当前物体在本地坐标系的Z,Y,X轴方向的单位向量,或者叫三维单位方向向量,是矢量

 

距离

Update(){

  float distance = this.first_move_speed * Time.deltaTime;//每秒移动的距离,是标量

  ......

 

注意

三维单位方向向量乘标量距离才能成为一个可以使用的有长度有方向的三维矢量

移动translate函数用(X轴方向的标量,Y轴方向的标量,,Z轴方向的标量,,指定的坐标系)就可以表示

move函数的是以三维矢量为参数

物体position的加减是以三维矢量为单位的

 

方法一

this.transform.Translate(0, 0, -distance, Space.Self);//本地坐标系为参考系
this.transform.Translate(0, 0, -distance, Space.World);//世界坐标系为参考系

 

方法二

this.c_ctrl.Move(-this.transform.forward * distance);//,this.c_ctrl是Unity自带的角色控制器,括号里的是一个三维矢量,三维单位方向向量乘标量距离,本地坐标系为参考系

this.c_ctrl.Move(-Vector3.forward * distance);//世界坐标系为参考系

 

方法三

this.transform.position+=transform.forward * distance;//做了一个三维矢量的加法,三维单位方向向量乘标量距离,本地坐标系为参考系

this.transform.position+=Vector3.forward * distance;//世界坐标系为参考系

以上是关于关于Unity中物体分别在本地和世界坐标系对应方向的移动的主要内容,如果未能解决你的问题,请参考以下文章

关于Unity的坐标系

unity shader 如何获取物体的本地坐标

Unity3D世界坐标系 ( 左手坐标系 | 游戏物体坐标 | 世界坐标系方向 )

Unity3D3D 物体概念 ② ( 空物体概念 | 创建空物体 | 利用空物体管理多个子节点 | 世界坐标系和本地坐标系操作模式 | 切换坐标系操作模式 | 轴心和几何中心模式 )

unity3d物体旋转

关于Unity中坐标系的种类