在unity 2D的c#代碼中,我將兩個gameobject的transform.localPosition相減去,爲什麽結果一直為0?我在unity界面中看見兩個gameobject的位置相減并不為0啊?
时间: 2024-02-27 20:52:30 浏览: 267
可能是因为你在使用`transform.localPosition`时并没有考虑到游戏对象的父级对象对其位置的影响。`localPosition`是相对于父级对象的位置,如果两个游戏对象有不同的父级对象,那么它们的位置相减的结果很可能是不正确的。你可以尝试使用`transform.position`来获取世界坐标系下的位置,这样可以避免父级对象对位置的影响。修改代码如下:
```
Vector3 positionDiff = obj1.transform.position - obj2.transform.position;
```
另外,如果你想要获取两个游戏对象在局部坐标系下的距离,可以使用`transform.InverseTransformVector`方法将世界坐标系下的向量转换为局部坐标系下的向量,然后再计算距离。示例代码如下:
```
Vector3 localPositionDiff = obj1.transform.InverseTransformVector(obj2.transform.position - obj1.transform.position);
float distance = localPositionDiff.magnitude;
```
阅读全文