我在“屏幕空间-相机”中有一个UI渲染;在这个UI中,我在屏幕的每一侧都有一个UI画布。这些画布包含用于生成物品的生成点,然后这些物品会被发射到屏幕空间中。
我使用UI放置它们,以便它们随用户屏幕缩放,因为我可以将它们固定在侧面。在下面,您可以看到中间的框是玩家屏幕,其周围的框包含生成点。
这是我的生成点的图片,因此您可以看到它们的顺序。
顶部方框中的生成物与底部方框具有相同的坐标,因为它们的父代是不同的,因此当要在此处生成物品时,它们只是在底部方框中生成。我需要的是将这些坐标转换为他们的父母空间或其他内容。
我尝试了这个,得到了相同的结果:
waveFourSpawnPoints[0].transform.TransformPoint(Vector3.zero)
答案 0 :(得分:1)
使用方法Camera.WorldToScreenPoint(Vector3 position)
从世界空间转换为屏幕空间。
您可能需要先使用Transform.TransformPoint
从本地空间转换为世界空间(就像已经在做的那样),然后再从世界转换为屏幕。
camera.WorldToScreenPoint(waveFourSpawnPoints[0].transform.TransformPoint(Vector3.zero))
编辑:
如果要将对象的局部坐标转换为其他对象的局部坐标(例如,从对象的坐标转换为其父对象的坐标),则可以将点从第一个坐标转换为局部坐标对象到世界,然后使用Transform.InverseTransformPoint
从世界到第二个对象的局部。
second.transform.InverseTransformPoint(first.transform.TransformPoint(point))