簡體   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