zoukankan      html  css  js  c++  java
  • 关于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;//世界坐标系为参考系

  • 相关阅读:
    JS 中深拷贝的几种实现方法
    实现一个函数clone,可以对JS中的5种数据类型(Number、String、Object、Array、Boolean)进行值复制
    etTimeout来实现setInterval
    原型链
    Vue.js面试题整理
    JS中的闭包
    JavaScript的数据类型
    MyBatis-Plus使用(1)-概述+代码生成器
    JDK8的Optional用法
    动态修改HttpServletRequest的Post请求参数
  • 原文地址:https://www.cnblogs.com/HangZhe/p/7608878.html
Copyright © 2011-2022 走看看