繁体   English   中英

光线投射和 2d arrays 在 Unity 中与魔方无法正常工作

[英]Raycasting and 2d arrays not working as expected with Rubik's Cube in Unity

我希望这是一个很好的问题,但我目前正在 Unity 中研究魔方。 我有一个自定义 MonoBehaviour Cubie的 3d 数组,每个数组都包含一个Face对象的一维数组。 然后我在Start()方法中使用此代码来创建 2d arrays 的面到 map 对多维数据集的更改(我确定这不是最有效的做事方式,但这适用于旨在涉及矩阵变换):

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 表示,它们显示如下: 魔方 2D 地图

这按预期工作,所以我假设 2d arrays 工作得很好。 但是,一旦我开始尝试进行光线投射以获取被点击的一侧,它只适用于连接到右侧的立方体。 基于这样一个事实,即当我更改上面的代码时,它改变了立方体的哪一侧与光线投射一起工作,我认为问题出在该代码上,与光线投射本身无关,但如果需要,我可以给你该代码.

当您使用 Instantiate function 时,您可以获得 object 这样的克隆(....)。

实例化 function 创建的对象不是游戏对象,因此为了使用预制件,您可以像这样在实例化 function 的末尾添加“as Gameobject”。

cube[i, j, k] = Instantiate(prefab, new Vector3(i, j, k), Quaternion.identity, transform) as GameObject;

而且,您必须使用physicsRaycast 进行光线投射操作。 我希望我的回答能回答你的问题。

以防万一有人好奇,这是我对我的问题的解决方案:

正如我在评论中提到的那样,我做错了,所以当我发现我需要改变哪些面孔使用哪些变量时,我设法走得更远。 在玩了一会儿之后,我制作了一个 excel 电子表格来帮助我正确地想象我将使用什么来 map 面部。 Excel电子表格

这让我可以在 for 循环中应用正确的映射,最终我得到了按预期工作的东西。 起初,我以错误的顺序插入变量,这最终导致了其他几个错误,但我能够通过切换顺序来解决这个问题,瞧,我的工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM