[英]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 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 进行光线投射操作。 我希望我的回答能回答你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.