unity3D游戏开发之Transform的坐标变换注意事项

Transform是unity的核心类之一.表示的是物体的平移,旋转和缩放.

而position和localPosition,

分别表示的是,transform的位置是世界空间,和父空间的描述.

注意是 父空间,并不是自身空间.

注意到这点后,在空间的变换时就会省心很多了.

如果想搞清楚transform.position的变换过程,可以这样来测试:

Java代码

  1. //父空间转世界.
  2. Debug.Log(transform.position);
  3. Debug.Log(transform.parent.TransformPoint(transform.localPosition));
  4. Debug.Log(transform.parent.localToWorldMatrix.MultiplyPoint(transform.localPosition) );

复制代码

Java代码

  1. //世界转父空间
  2. Debug.Log(transform.localPosition);
  3. Debug.Log(transform.parent.InverseTransformPoint(transform.position));
  4. Debug.Log(transform.parent.worldToLocalMatrix.MultiplyPoint(transform.position));

复制代码

但如果直接使用transform来变换的话,结果将不正确. 【狗刨学习网

Java代码

  1. Debug.Log(transform.position);
  2. Debug.Log(transform.TransformPoint(transform.localPosition));
  3. Debug.Log(transform.localToWorldMatrix.MultiplyPoint(transform.localPosition) );

复制代码

这时,就应该注意了,transform.localXXX表示的是在父空间的描述.

XXXPosition,EulerAngles,Scale)

如果想将一个空间的变换信息转换近另一个空间,可以这样:

1 最简单的方式

Java代码

  1. transform.position = target.position;
  2. transform.rotation = target.rotation;
  3. transform.localScale = target.lossyScale;

复制代码

当然,还需要视具体情况而定.【狗刨学习网

时间: 2024-11-10 23:09:28

unity3D游戏开发之Transform的坐标变换注意事项的相关文章

Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新完全解读

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:

[Unity3D]Unity3D游戏开发之从Unity3D到Eclipse

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本

[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(下)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:

[Unity3D]Unity3D游戏开发之ACT游戏三连击效果实现综述

各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在研究了Unity3D Mecanim动画系统的重定向特性后,今天我们继续来探索Mecanim动画系统更多的特性吧.今天博主想和大家分享的是ACT游戏中的三连击效果的实现,由于Unity3D目前存在Animation和Animator两种类型的动画组件,因此本文将分别讲这两种类型的动画组件的三连击效果的实现,其中Animation组件是Unity3.5以下版本所使用的动画组件,An

Unity3D游戏开发之Unity3D动画与Mecanim动画系统

Unity3D游戏开发之Unity3D动画与Mecanim动画系统 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生.Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期.使用从Unity资源商店找到的动画资源,或

unity3D游戏开发之iTween介绍和用法

unity3D游戏开发之iTween介绍和用法 一.iTween 介绍 iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 二.iTween 原理 iTween的核心是数值插值,简单说就是给iTween两个数值(开始值,结束值),它会自动生成一些中间值. 三.iTween 下载:  从官网http://itween.pixelplacement.com下载 主要文件有两个iTween.cs

Unity3D游戏开发之Unity打包APK

Unity3D游戏开发之Unity打包APK 1.安装JDK 2.配置JDK 3.在Paht的变量值后面加分号,把D:\android\adt-bundle-windows-x86-20131030\sdk\tools放在Path后面.[狗刨学习网] 4.点击菜单栏中的Edit-->Preferences 看Android SDK Location这个选项 浏览你的模拟器路径. 5.点击 File-Build Settings 然后再 点击Add Current 添加你的场景.再 点击Switc

[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(中)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:

Unity3D游戏开发之3DMAX 灯光

Unity3D游戏开发之3DMAX 灯光 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一.3DMAX 五种光源 1.Ommi Light 泛光灯:可以从一点向四周均匀照射的点光源. 2.Target Spotlight 目标聚光灯:一种投射光束,影响光束内被照射的物体,可以投影 阴影,照射范围可以指定. 3.