Esempio n. 1
0
    void MakeLists2_AroundEdge()
    {
        for (int i = 0; i < edgeList.Count; i++)
        {
            colList = Physics.OverlapSphere(edgeList[i].transform.position, searchDis_edge); // 各辺の原点位置を中心にオブジェクト探索
            edge    = edgeList[i].GetComponent <EdgeInformation>();

            for (int j = 0; j < colList.Length; j++)
            {
                if (colList[j].gameObject.CompareTag("Face"))
                {
                    ////////////////////////////////
                    //// 辺に接する面のリスト化 ////
                    ////////////////////////////////

                    // EdgeInformationに、辺に接する2面のtransform情報を与える
                    if (edge.face[0] == null)
                    {
                        edge.face[0] = colList[j].gameObject;
                    }
                    else
                    {
                        edge.face[1] = colList[j].gameObject;
                    }

                    // 辺に接する面のリスト化
                    faceList_FromEdge[i].Add(colList[j].gameObject); // ◆今のところデバッグ用としてのみの使用◆辺の識別番号 = i、面のgameObject = colList[j].gameObject

                    ////////////////////////////////
                    //// 面に接する辺のリスト化 ////
                    ////////////////////////////////

                    face = colList[j].gameObject.GetComponent <FaceInformation>();
                    // FaceInformationに、面に接する4辺のtransform情報を与える
                    if (face.edge[0] == null)
                    {
                        face.edge[0] = edgeList[i];
                    }
                    else if (face.edge[1] == null)
                    {
                        face.edge[1] = edgeList[i];
                    }
                    else if (face.edge[2] == null)
                    {
                        face.edge[2] = edgeList[i];
                    }
                    else
                    {
                        face.edge[3] = edgeList[i];
                    }

                    // 面に接する辺のリスト化
                    edgeList_FromFace[face.FaceNum].Add(edgeList[i]); // ◆今のところデバッグ用としてのみの使用◆面の識別番号 = face.FaceNum、辺のgameObject = edgeList[i]
                }
            }
        }
    }
Esempio n. 2
0
    void NumberingAndMakeLists()
    {
        for (int i = 0; i < edgeList.Count; i++)
        {
            edge         = edgeList[i].GetComponent <EdgeInformation>();
            edge.EdgeNum = i;                                 // 辺に識別番号を付与

            vertexList_FromEdge.Add(new List <GameObject>()); // 辺の数だけ新規リストを作成
            faceList_FromEdge.Add(new List <GameObject>());   // 辺の数だけ新規リストを作成
        }

        for (int j = 0; j < faceList.Count; j++)
        {
            face         = faceList[j].GetComponent <FaceInformation>();
            face.FaceNum = j;                               // 面に識別番号を付与

            edgeList_FromFace.Add(new List <GameObject>()); // 面の数だけ新規リストを作成
        }
    }
Esempio n. 3
0
    void FindNearestFaceOrEdge()
    {
        // 直前までカメラが面していたのは面か辺か
        if (!vertical && !horizontal) // 面の時
        {
            face = currentGao.GetComponent <FaceInformation>();
            float?diff = null;

            for (int i = 0; i < 4; i++)
            {
                // robotの探索移動前後の距離を比較し、最も距離が縮まった辺(のGameObject)を割り出す
                // robotの探索移動前(=現在いる面)と移動先候補の辺との距離
                float beforeDis = (face.edge[i].transform.position - currentGao.transform.position).magnitude;
                // robotの探索移動後と移動先候補の辺との距離
                float afterDis = (face.edge[i].transform.position - robot.transform.position).magnitude;
                if (diff == null || afterDis - beforeDis < diff)
                {
                    diff    = afterDis - beforeDis;
                    nextGao = face.edge[i];
                }
            }
        }
        else // 辺の時
        {
            edge = currentGao.GetComponent <EdgeInformation>();
            float?diff = null;

            for (int i = 0; i < 2; i++)
            {
                // robotの探索移動前後の距離を比較し、最も距離が縮まった面(のGameObject)を割り出す
                // robotの探索移動前(=現在いる面)と移動先候補の辺との距離
                float beforeDis = (edge.face[i].transform.position - currentGao.transform.position).magnitude;
                // robotの探索移動後と移動先候補の辺との距離
                float afterDis = (edge.face[i].transform.position - robot.transform.position).magnitude;
                if (diff == null || afterDis - beforeDis < diff)
                {
                    diff    = afterDis - beforeDis;
                    nextGao = edge.face[i];
                }
            }
        }
    }