本地坐标VS世界坐标

题记:感谢自称80 的广平同学

做互动表情的时候,效果为点击某个玩家A的头像,会从我这个头像飘一个特效到对方A的头像上。

做法1:把两个头像的坐标里的Image的本地坐标转为世界坐标,再将该世界坐标转为某个父节点的本地坐标

通过Transform.TransformPoint 将本地坐标转为世界坐标
通过Vector3 InverseTransformPoint 将世界坐标转为本地坐标
本地坐标VS世界坐标_第1张图片
本地坐标VS世界坐标_第2张图片

结果:得出的坐标是8000多。显然是错误的。看到
这里写图片描述
这样的提示文字,遂放弃这种方式。

做法2:注意到本地坐标其实是物体相对于父节点的坐标,而世界坐标可以说是绝对坐标,或者说无父节点的坐标。
故,我们只需要先让特效出现在头像1下,并坐标设置为Image的localPosition,然后再将特效的父节点改为头像2,这样Image的localPosition即改变。但是世界坐标是不变的,还是处于我们看到的原位置,
这个时候,此特效的目标点就是头像2 的localPosition

这里写图片描述

本地坐标VS世界坐标_第3张图片

思路就这样,不用麻烦计算坐标了。只需要换算到同一个坐标系下。

你可能感兴趣的:(unity)