【发布时间】:2024-01-17 12:47:01
【问题描述】:
我正在使用Render Texture 制作侧面地图,它工作正常,我已经完成了这些步骤。
- 渲染场景的一个主摄像头。
- NGUI 相机正在渲染 GUI。
- 该 GUI 包含使用 GUI 相机在纹理上渲染场景的渲染纹理(小地图)。
但是现在我想进一步改进地图并让它变得难以处理。我想要渲染纹理点击点的世界空间位置。 有什么方法可以让我从渲染纹理的特定点击点获取世界空间位置?
如果我单击渲染纹理中的某个位置,我如何才能在 3D 世界空间中获得该点。
例如:我在渲染纹理上单击了一个汽车对象。现在,如何在 3D 世界空间中突出显示或获取它。 如何将 2D 渲染纹理点击位置转换为世界空间位置!
【问题讨论】:
-
指针交互不会发生在单个纹理上,它们是来自相机的光线投射撞击对撞机的结果。如果您使用 Unity5,您的游戏对象将需要一个碰撞器,您可以在相机上使用 EventSystem a PhysicsRaycaster 和 IPointClickHander 接口
-
我猜 raycast 使用物理并且相机上没有应用物理
-
光线投射是物理系统的一部分,是的,但它们是从相机投射的。我建议您阅读文档:)。您需要在具有渲染纹理平面的游戏对象上使用对撞机,然后使用光线投射。一个快速的谷歌搜索给出了一些关于 Unity3d 答案的例子,看看 this thread 和 this
-
将碰撞器附加到您的渲染纹理游戏对象。向它投射光线并将生命值存储在纹理空间中。接下来找到纹理使用的相机并使用先前存储的命中点,从对应于纹理坐标的视口拍摄第二条光线。任何被第二射线击中的东西都应该是正确的对象。 (未经测试)
-
怎么样?或者它是如何关闭的。我的意思是它到底在哪里失败了?您是否尝试过使用
Debug.DrawRay(start, direction, color, duration)绘制调试光线(如果不使用可以设置持续时间的重载,光线只会出现在一个太短而无法看到的帧中)?我不在家里的自动取款机,所以我不能自己再试几个小时。