【发布时间】:2021-06-14 20:15:11
【问题描述】:
我希望这是一个很好的问题,但我目前正在 Unity 中研究魔方。我有一个自定义 MonoBehaviour 的 3d 数组,Cubie,每个都包含一个 Face 对象的 1d 数组。然后,我在Start() 方法中使用此代码来创建二维面数组以将更改映射到多维数据集(我确信这不是最有效的做事方式,但这是一个旨在涉及矩阵变换):
for (int i = 0; i < cube.GetLength(0); i++)
{
for (int j = 0; j < cube.GetLength(1); j++)
{
for (int k = 0; k < cube.GetLength(2); k++)
{
cube[i, j, k] = Instantiate(prefab, new Vector3(i, j, k), Quaternion.identity, transform);
Cubie cubie = cube[i, j, k];
Face[] faces = cubie.GetFaces();
foreach (Face face in faces)
{
if (face.GetFaceType() == FaceType.Up) upFace[j, k] = face;
if (face.GetFaceType() == FaceType.Down) downFace[j, k] = face;
if (face.GetFaceType() == FaceType.Right) rightFace[j, k] = face;
if (face.GetFaceType() == FaceType.Left) leftFace[j, k] = face;
if (face.GetFaceType() == FaceType.Front) frontFace[j, k] = face;
if (face.GetFaceType() == FaceType.Back) backFace[j, k] = face;
}
}
}
}
我有一组 UI 面板作为立方体的 2d 表示,它们显示如下:
这按预期工作,所以我假设二维数组工作得很好。但是,一旦我开始尝试通过光线投射来获取被点击的一侧,它只适用于连接到右侧的立方体。基于这样一个事实,即当我更改上面的代码时,它改变了立方体的哪一侧与光线投射一起工作,我认为问题出在该代码上,与光线投射本身无关,但如果需要,我可以给你该代码.
【问题讨论】:
-
作为后续,我已经弄清楚了哪里出错了,但还没有找到解决方法。我需要在每一侧使用
i、j和k,具体取决于侧。目前,我有 6 个面孔中的 3 个按预期工作,但我对其余的面孔有点困惑。 -
我使用了一个 Excel 表来可视化需要在哪里使用哪些变量,并且它大部分都有效。我认为其余的错误是无关的。