Unity 切换Parent后LocalPostion没有改变
时间: 2024-01-02 11:04:03 浏览: 57
在 Unity 中,当你将一个物体从一个父物体移动到另一个父物体时,它的本地坐标将不会改变。这是因为本地坐标是相对于父物体的坐标系而言的,而不是全局坐标系。如果你想要在改变父物体后保持物体在世界空间中的位置不变,你需要在移动物体之前将其本地坐标转换为世界坐标,然后再将其转换回本地坐标。
以下是一些示例代码,可以帮助你更好地理解这个概念:
```
// 获取物体在世界空间中的坐标
Vector3 worldPosition = transform.position;
// 将物体从旧的父物体中移除
transform.SetParent(newParent);
// 将物体的世界坐标转换为本地坐标
transform.position = transform.parent.InverseTransformPoint(worldPosition);
```
这段代码首先获取物体在世界空间中的坐标,并将其存储在 `worldPosition` 变量中。然后,它将物体从旧的父物体中移除,并将其设置为新的父物体。最后,它将物体的世界坐标转换为新的本地坐标,并将其设置为物体的位置。
希望这可以帮助你解决问题!
阅读全文