【发布时间】:2018-10-11 22:17:42
【问题描述】:
我想在 3D 世界空间中创建一个以 0,0,0 为中心的 2D 平面。然后,我想在 2d 平铺坐标中定义这个平面。所以 例如一个平面除以 3 个图块将成为数组 [3,3] 的地图
问题是这仍然会给出一个带有负分的瓦片地图。世界左上角 -1,1 将是数组 -1 中的 0,0,- 将是 1,0 等等...
世界:
-1,1 0,1 1,1
-1,0 0,0 1,0
-1,-1 0,-1 1,-1
数组:
0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2
我对 Unity 的主要希望是我可以避免图形数学并专注于逻辑脚本。所以,我在问 Unity 2018 是否有任何一组功能可以轻松完成我上面描述的操作?
从长远来看,这段代码的原因是创建一个游戏和编辑器,用于将 3d 预制件放置到 3d 世界中,但使用 2D 数组来定义它们的属性。弄乱 y 轴目前不是问题。我想知道我是否可以使用它创建一个开源 XCOM 风格的游戏。我目前负担不起资产,因为我在经济上依赖并且不喜欢询问。我也注意到也非常缺乏免费的 3D 瓷砖游戏编辑器。感谢您的帮助...
【问题讨论】:
-
澄清一下:您想要一个函数自动将任意大小的 2d 平面划分为 n 个部分,并让光线投射返回部分 [0-n]?
-
是的。 0,0 是平面的中心部分
-
还要澄清一下,我有一种方法可以做到这一点。在我的 update() 中,我使用以下内容: ray = Camera.main.ScreenPointToRay(Input.mousePosition);
-
然后在鼠标点击中: if (coll.Raycast(ray, out hitInfo,100f)) 给了我需要的 hitinfo 值。即使我平移相机位置,这仍然有效。但是,一旦我使用 Camera.main.transform.Rotate(new Vector3(0,-45,0),Space.World); 旋转位置,它就会中断。相机的起始位置为(0, 20, -40),旋转为(30,0,0)
-
我将编辑 OP 以使用我在这些 cmets 中提供的信息进行更新。仍在学习如何使用 SO。
标签: arrays graphics 3d 2d raycasting