Unity基础篇:Unity中的世界坐标和局部坐标,Transform和Translate等问题的讨论。

2023-11-09

今天感触良多,故于此一记。

首先,对于世界坐标和局部坐标。

这是两个cube,是我们今天的主角。首先是这个父Cube,我们注意到它此时坐标为(0,0,0),由于他在根目录,所以他的transform.position就是他的世界坐标。

这里之所以用TransformDirection而不是Transformpoint,因为TransformPoint会受到其他因素的影响,可以去Unity官网查一下文档。

我们挪动一下

就验证了我们的猜想,

而对于他的子Cube,

 

他的Transform是相对于他的父物体Cube的,而不是相对于世界坐标系。这点从转换到世界坐标的变化可以得知。

接下来我们讲一讲,Vector3.forward和transform.forward的区别,Vector3.forward的值永远是(0,0,1)(这里的(0,0,1)是世界坐标的(0,0,1)),而transform.forward我们可以理解为其对应物体的z轴方向,是一个向量,而不是一个坐标,但是我们应当把它看成世界坐标系内的,而不是局部坐标系内的。而transform的属性可以在我上面提到的对比来思考。是继承关系。

 

想要让物体向前移动,在transform.translate()上和直接修改transform.position上,差别是挺大的。

transform.position 本身就是世界坐标。

1、transform.position+= vector3.forward 

等于是在世界坐标的z轴前进。

2、transform.position+=transform.forward 

等于是物体自身坐标系的z轴前进。

 

3、transform.translate(vector3.forward,space.self) 

等于是自身坐标系的z轴前进。

效果等同于2。

4、transform.translate(transform.forward,space.self) 

这个用法会引起很怪异和鬼畜的后果,不建议使用。

5、transform.translate(vector3.forward,space.world)

等于是让物体沿着世界坐标的z轴前进。

效果等同于1。

6、transform.translate(transform.forward,space.world)

等于是让物体沿着“物体自身坐标z轴在世界坐标上的方向”前进(等同与物体沿着自身z轴前进)。

效果等同于2。

有些同学可能不太理解以上部分的含义,没关系,我们可以先记住,在后面自然就懂了。但我这里还是要讲一下。

对于translate(a,b)函数,如果省略b,系统将把它缺省为space.self,意思是在自身坐标系进行a向量方向的移动,如果b为space.world,那么物体就在世界坐标系上进行a向量方向的移动。还是不懂得话大家可以自己写一个小Demo试验一下,不要怕麻烦,学习从来没有捷径。

最后,总结一下,除了translate这种比较特殊的函数,其他的,比如SimpleMove,DrawLine等,如果要在游戏物体前方进行操作,一概使用transform.forward,但是要注意,他只是个模为1的向量,别忘了根据自己的需求灵活变化,这里需要大家自行体会!

参考:https://blog.csdn.net/kaluluosi111/article/details/17206655

          https://blog.csdn.net/ithot/article/details/68485587

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity基础篇:Unity中的世界坐标和局部坐标,Transform和Translate等问题的讨论。 的相关文章

  • 简单几句话总结Unicode,UTF-8和UTF-16

    概念 先说一说基本的概念 这包括什么是Unicode 什么是UTF 8 什么是UTF 16 Unicode UTF 8 UTF 16完整的说明请参考Wiki Unicode UTF 8 UTF 16 用比较简单的话来说就是 Unicode定
  • Flink实战: 窗口TopN分析与实现

    TopN 的需求场景不管是在离线计算还是实时计算都是比较常见的 例如电商中计算热门销售商品 广告计算中点击数前N的广告 搜索中计算搜索次数前N的搜索词 topN又分为全局topN 分组topN 比喻说热门销售商品可以直接按照各个商品的销售总
  • 【K8S系列】5-K8s实战-Controllers

    K8s控制器 Controllers 官网 https kubernetes io docs concepts workloads controllers 控制器的作用是用来统一发布Pod的对象 通过yaml文件定义 运行后可以进行查看 变
  • Java面试题新二(转载)

    JAVA基础 JAVA中的几种基本类型 各占用多少字节 下图单位是bit 非字节 1B 8bit String能被继承吗 为什么 不可以 因为String类有final修饰符 而final修饰的类是不能被继承的 实现细节不允许改变 平常我们
  • 2020年aws认证一些经验 saa

    2020年2月过的aws saa考试 1 报名网址 https www aws training Certification 2 费用 150美金 需要一个visa的信用卡 3 证书有效期3年 4 考试名字要与信用卡一致 考试时要看信用卡和
  • 【机器学习基础】机器学习中必知必会的 3 种特征选取方法!

    随着深度学习的蓬勃发展 越来越多的小伙伴开始尝试搭建深层神经网络应用于工作场景中 认为只需要把数据放入模型中 调优模型参数就可以让模型利用自身机制来选择重要特征 输出较好的数据结果 在现实工作场景中 受限制数据和时间 这样的做法其实并不可取
  • PHP微信获取小程序手机号失败 -41003

    使用官方的PHP版demo解密 调用接口后返回错误码 41003 并未成功解密出想要的信息 以为是encryptedData 数据传输的时候 号会自动转换为空格 但是不是 打印了一下解密后的iv 和 encryptedData 发现是乱码
  • matlab开根号_matlab基本计算

    这里介绍的内容是使用MATLAB进行基本的数学计算 完成的是类似计算机计算数学算式的功能 这篇文章基本可以帮助你学会所有基本的matlab计算方法 1 基本计算 MATLAB中的基本的运算符号为 四则运算规则和平时使用的计算器相同 使用MA
  • C++语句 与简单方法

    语句 在c primer plus 第二章中除了讲到输出流 还提到了更多的语句 书中称之为Statement 简单看来语句有申明语句 赋值语句 调用函数的语句 下面看书上的一组例子 include
  • 锁的四种状态及升级过程

    锁的四种状态与锁升级过程 图文详解 一 前言 锁的状态总共有四种 级别由低到高依次为 无锁 偏向锁 轻量级锁 重量级锁 这四种锁状态分别代表什么 为什么会有锁升级 其实在 JDK 1 6之前 synchronized 还是一个重量级锁 是一
  • react脚手架、使用步骤、在react脚手架里做项目的步骤、反向代理

    脚手架 facebook的官方脚手架 1 安装 create react app CRA npm install create react app g yarn global add create react app 安装yarn 方法一
  • Shiro学习小记--身份验证得到principals

    项目使用shiro进行权限管理 Shiro国内目前资料极少 学习时完全就是根据张开涛的 跟我学Shiro 自己去摸索的 慢慢的开始入门 Shiro中有一个概念是principals 解释如下 principals 身份 即主体的标识属性 可

随机推荐

  • 软件测试-环境搭建思路/测试流程

    环境搭建思路 测试流程 1 软件测试环境搭建 1 1 搭建测试环境前 1 2 环境搭建模式 1 3 测试环境建设思路 2 测试过程 2 1 测试策划过程 2 1 1 需求分析 余额宝需求测试实战 2 1 2 测试策略 2 1 3 测试方案设
  • 视频教程-卷积神经网络从原理到实战-深度学习

    卷积神经网络从原理到实战 本科北京航空航天大学计算机科学与技术专业 长期从事图像算法和文本算法 曾就业于航天相关机密单位 熟悉FasterRCNN SSD YOLO MASKRCNN一系列图像框架 及Bert Bilstm等NLP相关技术
  • App隐私合规注意事项和相关材料

    合规条文相关资料 最新 移动互联网应用程序信息服务管理规定 2022年8月1日起施行 http www cac gov cn 2022 06 14 c 1656821626455324 htm 全国APP技术检测平台 APP公共服务系统 h
  • 【HarmonyOS】详解低代码端云一体化开发之数据模型

    关键字 元服务 低代码平台 端云一体化开发 数据模型 拖拽式UI 1 写在前面 上一篇中分享了关于低代码平台开发元服务的基本使用 有兴趣的可以看一下 文章地址如下 华为开发者论坛 但是在上一篇中我们的数据都是在端侧配置的 这种方式肯定是无法
  • IDEA 快捷键大全

    目录 一 文本编辑 二 光标操作 三 文本选择 四 代码折叠 五 辅助编码 六 上下文导航 七 查找操作 八 符号导航 九 代码分析 十 运行和调试 十一 代码重构 一 文本编辑 Ctrl Shift V 从历史选择粘贴 Ctrl D 复制
  • Java多线程实现的四种方式

    多线程实现的四种方式 1 继承Thread类 重写run方法 2 实现Runnable接口 重写run方法 实现Runnable接口的实现类的实例对象作为Thread构造函数的target 3 通过Callable和FutureTask创建
  • mbind: Operation not permitted

    问题描述 IntelliJ IDEA 中 Docker Integration 插件 启动 MySql 容器 然后使用 Navicat for MySQL 来连接 只要连接数据库就会出现 mbind Operation not permit
  • java 性能监控 jstack 线程死锁 JConsole 和 BTrace 图形化工具

    java 性能监控 工具 除了 javac java javap 之外 jdk 安装包还提供了很多其他工具 列出 bin 目录下的文件 TomChens MacBook Pro Commands tomchen ls appletviewe
  • 挖坑指南:npm install命令各参数的区别(--sava --save-dev -g)

    前言 在前端工作中 npm已经成为必不可少的一部分 npm install可以为我们的项目安装依赖 那么这个命令的参数 各代表什么含义呢 开始 我们逐一来看看npm install save dev 安装我们项目开发时的依赖 比如一些插件
  • [Unity][AssetBundle]从AB包中加载Material材质球

    名字为111的AB包中 已经有打包的材质 名字为 test using UnityEditor public AssetBundle ab material public Material m
  • Ubuntu16.04为ROS搭建Qt开发环境

    很早之前就听说了Qt有ROS插件可以使用 只是阴 lan 差 de 阳 qu 错 gao 一直到今天还是在使用纯文本的方式在开发ROS 上午心 shou 血 bu 来 liao 潮 le 走上了Qt ros qtc plugin的不归路 所
  • 【华为机试真题Python】字符串消消乐游戏

    目录 题目描述 测试用例 参考代码 题目描述 输入一个只包含英文字母的字符串 字符串中的两个字母如果相邻且相同 就可以消除 在字符串上反复执行消除的动作 直到无法继续消除为止 此时游戏结束 输出最终消除完后留下的字符串 测试用例 用例1 输
  • 网络编程学习笔记

    网络基础 协议的概念 什么是协议 从应用的角度出发 协议可理解为 规则 是数据传输和数据的解释的规则 假设 A B双方欲传输文件 规定 第一次 传输文件名 接收方接收到文件名 应答OK给传输方 第二次 发送文件的尺寸 接收方接收到该数据再次
  • 编写 golang 命令行小工具

    1 前言 把想了很久的命令行小工具写了个demo 前几天看了 7 天仿 gin 项目 于是今天借鉴了其路由匹配方式 写出了这个demo 思路是 创建一个类似路由的map key值为选项 value为选项信息的结构体 结构体中保存有选项的动作
  • Cesium中文教程-3D模型(3D Models)

    目录 3D模型 3D Models 1 快速入门 Quick start 2 动画 Animations 3 各取所需 Picking 4 转化COLLADA为glTF Converting COLLADA to glTF 5 故障排除 T
  • LockSupport源码解析

    一 前言 LockSupport 和 CAS 是Java并发包中很多并发工具控制机制的基础 它们底层其实都是依赖Unsafe实现 LockSupport是用来创建锁和其他同步类的基本线程阻塞原语 LockSupport 提供park 和un
  • c#解决TCP“粘包”问题

    一 TCP粘包产生的原理 1 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包 从接收缓冲区看 后一包数据的头紧接着前一包数据的尾 出现粘包现象的原因是多方面的 它既可能由发送方造成 也可能由接收方造成 2 发送方引起的粘包是由T
  • 【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说 其在服务器市场的使用已经占据了绝对的霸主地位 不可动摇 Linux的各种设计思想和使用也被传承 当然不乏各种黑Linux 而且黑的漂亮 Linux的很多独特的设计 对性能也产生了巨大的提升 也为其他应用软件和系
  • 【C51单片机学习笔记----DS18B20温度传感器&&LCD1602液晶屏&&直流电机调速与呼吸灯&&AD模数转换&&红外外部中断】

    文章目录 一 DS18B20温度传感器 1 DS18B20温度传感器连接原理图 2 DS18B20温度传感器单总线通信时序 3 DS18B20温度传感器代码模块 二 LCD1602液晶屏 1 LCD1602液晶屏连接原理图 2 字符码和指令
  • Unity基础篇:Unity中的世界坐标和局部坐标,Transform和Translate等问题的讨论。

    今天感触良多 故于此一记 首先 对于世界坐标和局部坐标 这是两个cube 是我们今天的主角 首先是这个父Cube 我们注意到它此时坐标为 0 0 0 由于他在根目录 所以他的transform position就是他的世界坐标 这里之所以用