unity3d InverseTransformPoint方法

从歪果仁的脚本里看到了这个方法,查脚本,看脚本说明也没看懂,官方的说明是,变换位置从世界坐标到自身坐标,Transform.TransformPoint相反。

试验了一下得出这个结论,如果某一个物体A的坐标相对于世界坐标是(1,2,1), 物体target的坐标相对于世界坐标是(3,1,2)

Vector3 targetPos = target.transform.position;
Vector3 newPos = A.transfrom.InverseTransFormPoint(targetPos);

newPos 的值为(2,-1,1)

先说这个newPos是怎么计算的 , newPos的x方向的值我用, Xn表示, y, z,轴方向依次类推

Xn = - ( 1-3 ) = - (Xa - Xtarget) = 2

Yn = - ( 2-1 ) = - (Ya - Ytarget) = -1

Zn = - ( 1-2 ) = - (Za - Ztarget) = 1

这个值代表 物体target相对于物体A的位置, 换句话说, 就是把物体A当做了世界的中心,target相对于新的世界中心所返回的位置

时间: 2025-01-10 11:45:37

unity3d InverseTransformPoint方法的相关文章

扩展Unity3d 组件方法,简化API使用 - C#特性之 Extension Method

在日常使用Unity3d中,经常碰到一些简单操作但是代码却很长的问题,比如变换一个 GameObject的 Y 位置,会按照下面的写法: transform.localPosition = new Vector3 (transform.localPosition.x, transform.localPosition.y + 100, transform.localPosition.z); 转自http://blog.csdn.net/huutu http://www.thisisgame.com

怎么规划一个零基础学习Unity3D的“方法”或者“流程”?

具体出处:https://www.zhihu.com/question/35542990 我只是一个计算机相关专业毕业的,已经掌握了基础的C#并开发过.net的.目前突然心血来潮对unity3D有兴趣,就学习下. 推荐学习视频网页:http://www.taikr.com/ 虽然要钱不过有免费的. http://study.163.com/course/introduction.htm?courseId=1002818014  游戏特效 - Unity3d特效基础 - 入门到精通(免费)  ht

Unity3d工具方法小集

获取垂直水平方向上的输入: float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); 给刚体一个力: Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); GetComponent<Rigidbody>().AddForce(move

在Unity3D里使用DLL

开始第一篇的内容: 首先,我们需要新建一个类库项目,可以使用Visual Studio或者Monodevelop来做.我这里是使用vs2012来创建: 选择好项目类型.写好项目名称. 新生成的项目里面默认有一个Class1类 可以通过在解决方案资源管理器里面进行重命名改成自己想要的类名,比如我这里改成了Math3D 然后写一个简单的静态方法在里面.这里我写了个最简单的加法(Add).也可以不写静态方法,写出普通的public方法,用的时候new对象出来调用该方法也可以.这和正常的C#编程没区别.

Unity3D项目程序加密1——在Unity3D里使用自己的dll

Unity3D做出来的项目是非常容易被反编译的,被反编译后你的所有资源和代码都将会毫无遮掩的呈现出来.由于.net本身没什么加密的措施,所以我们一般都是使用混淆代码的方式来对程序进行一定的加密.接下来2篇博客,简单的讲一下我自己在Unity3D的程序加密做法.首先第一篇,我会简单的说明一下怎样在Unity3D里面使用dll动态链接库,然后第二篇会说明怎样对dll进行混淆. 开始第一篇的内容: 更多内容请访问[狗刨学习网]http://unity.gopedu.com 首先,我们需要新建一个类库项

uLua学习笔记(三):Unity3D和Lua之间的相互调用

这篇笔记主要集中学习一下uLua和Unity3D之间相互调用的方法,我们导入了uLua之后,现在会弹出一个类似学习屏幕的东西,如下: 先赞一个! Unity3D调用Lua Unity3D调用Lua的方法还是比较简单的,所以先说这个,由于这部分在学习笔记(一)中已经说的挺多的了,更多的内容点击这里回去看,所以这里我们就来看一个简单的示例即可: 1 using LuaInterface; 2 using UnityEngine; 3 4 public class UnityCallLua : Mon

[Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法

1.U3D经常莫名奇妙崩溃.   一般是由于空异常造成的,多多检查自己的引用是否空指针. 2.编码切换警告提示.   警告提示:Some are Mac OS X (UNIX) and some are Windows. This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings men

(转)Unity3D中移动物体位置的几种方法

1. 简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale). 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position). 2.1 Transform.Tra

Unity3d 中键值监听方法

unity3d的api中没有负责监听键值的方法,不过unity的input类是通过c#类获取各类监听事件,所以我们可以通过c#类监听,方法如下: void OnGUI() { Event e = Event.current; if (e.isKey) { if (Event.current.keyCode == KeyCode.Joystick2Button0){ //你的逻辑} } } 过程很简单,就不多说,注意该事件只能在OnGUI函数中起作用. 转载请标明出处,from 博客园 HemJo