void Start()
    {
        systemScript = GetComponent <centralSystem>();
        GameObject obj;

        for (int m = 0; m < systemScript.textSet.GetLength(0); m++)
        {
            for (int n = 0; n < systemScript.textSet.GetLength(1); n++)
            {
                obj = new GameObject(m.ToString() + n.ToString("D2"));
                CubeKey CK = obj.AddComponent <CubeKey>();
                CK.myPosition = new Vector3(keyPosX1(n), keyPosY1(m), 0);
            }
        }
    }
Beispiel #2
0
 private void Awake()
 {
     createSorce  = GameObject.Find("central").GetComponent <createTrapezoidPole>();
     systemScript = GameObject.Find("central").GetComponent <centralSystem>();
 }
Beispiel #3
0
    void Start()
    {
        //斜め入出対策初期化
        wasFingerPosition = new Vector3[2];
        for (int i = 0; i < variables.fingers.Length; i++)
        {
            wasFingerPosition[i] = variables.fingers[i].transform.position;
        }


        //法線初期化
        normalVector   = new Vector3[6];
        normalBasicVec = new Vector3[6];

        systemScript = GameObject.Find("central").GetComponent <centralSystem>();

        // CombineMeshes()する時に使う配列   始端と終端も含めるので+3
        CombineInstance[] combineInstanceAry = new CombineInstance[3];

        //メッシュ作成
        //頂点計算
        CalcVertices();

        //最初の一枚
        //メッシュ作成
        Mesh meshFirst = new Mesh();

        //メッシュリセット
        meshFirst.Clear();
        //メッシュへの頂点情報の追加
        meshFirst.vertices = StartVertex;
        //メッシュへの面情報の追加
        meshFirst.triangles = EndFace;
        // 合成するMesh(同じMeshを円形に並べたMesh)
        combineInstanceAry[0].mesh      = meshFirst;
        combineInstanceAry[0].transform = Matrix4x4.Translate(transform.position);

        //真ん中
        Mesh mesh = new Mesh();

        //メッシュリセット
        mesh.Clear();
        //メッシュへの頂点情報の追加
        mesh.vertices = SideVertex;
        //メッシュへの面情報の追加
        mesh.triangles = SideFace;
        //合成するMesh(同じMeshを円形に並べたMesh)
        combineInstanceAry[1].mesh      = mesh;
        combineInstanceAry[1].transform = Matrix4x4.Translate(transform.position);

        //最後の一枚だけ別計算
        //メッシュ作成
        Mesh meshLast = new Mesh();

        //メッシュリセット
        meshLast.Clear();
        //メッシュへの頂点情報の追加
        meshLast.vertices = EndVertex;
        //メッシュへの面情報の追加
        meshLast.triangles = EndFace;
        // 合成するMesh(同じMeshを円形に並べたMesh)
        combineInstanceAry[2].mesh      = meshLast;
        combineInstanceAry[2].transform = Matrix4x4.Translate(transform.position);

        //合成した(する)メッシュ
        Mesh combinedMesh = new Mesh();

        combinedMesh.name = transform.name;
        combinedMesh.CombineMeshes(combineInstanceAry);
        //内向き法線の計算
        culcNormal(combinedMesh.vertices);

        //メッシュフィルター追加
        MeshFilter mesh_filter = new MeshFilter();

        mesh_filter = this.gameObject.AddComponent <MeshFilter>();
        //メッシュアタッチ
        mesh_filter.mesh = combinedMesh;
        //レンダラー追加 + マテリアルアタッチ
        meshRenderer          = this.gameObject.AddComponent <MeshRenderer>();
        meshRenderer.material = variables.material_TrapezoidPole_Normal;

        //NormalMapの再計算
        mesh_filter.mesh.RecalculateNormals();

        //XRじゃないなら
        if (!variables.isOnXR)
        {
            //暫定当たり判定用Event Trigger
            //イベントトリガーのアタッチと初期化
            EventTrigger currentTrigger = this.gameObject.AddComponent <EventTrigger>();
            currentTrigger.triggers = new List <EventTrigger.Entry>();

            //侵入イベント用
            //侵入時に色を変える
            //イベントトリガーのトリガーイベント作成
            EventTrigger.Entry entry1 = new EventTrigger.Entry();
            entry1.eventID = EventTriggerType.PointerEnter;
            entry1.callback.AddListener((x) => OnMouseEnterOwnMade());  //ラムダ式の右側は追加するメソッド
                                                                        //トリガーイベントのアタッチ
            currentTrigger.triggers.Add(entry1);
            //侵入終了時に色を戻す
            EventTrigger.Entry entry2 = new EventTrigger.Entry();
            entry2.eventID = EventTriggerType.PointerExit;
            entry2.callback.AddListener((x) => OnMouseExitOwnMade());
            currentTrigger.triggers.Add(entry2);
        }

        //テキスト表示
        make3Dtext();

        //クリエイト元を親にする
        transform.parent   = systemScript.gameObject.transform;
        transform.position = myPosition + transform.parent.position;
    }
Beispiel #4
0
 private void Awake()
 {
     systemScript = GameObject.Find("central").GetComponent <centralSystem>();
 }
Beispiel #5
0
    void Start()
    {
        //stage情報初期化
        stage = variables.stage;

        //法線初期化
        normalVector   = new Vector3[variables.trapezoidDivisionNum + 1, 6];
        normalBasicVec = new Vector3[variables.trapezoidDivisionNum + 1, 6];

        if (myParent == null)
        {
            createSorce = GameObject.Find("central").GetComponent <createTrapezoidPole>();
            //現在のTextSetの段数を取得
            poleSum = variables.poleSum;
        }
        else
        {
            createSorce = myParent.GetComponent <createTrapezoidPole>();
            //自分の親の名前から該当TextSetの行からアイテム数を取得
            //Debug.Log(myParent.name.Substring(9));
            poleSum = GameObject.Find("central").GetComponent <centralSystem>().GetTextSetItemNum(int.Parse(myParent.name.Substring(9)));
        }

        systemScript = GameObject.Find("central").GetComponent <centralSystem>();

        //自分の番号を名前から取得し初期化
        poleNum = int.Parse(transform.name) - 1;

        //LineVertex初期化  最初の面4頂点+中間面4頂点+最後の面4頂点
        LineVertex = new Vector3[4 + variables.trapezoidDivisionNum * 4 + 4];
        //格納先も初期化
        lineVertecies = new Vector3[8 + 4 * variables.trapezoidDivisionNum + 8];

        // CombineMeshes()する時に使う配列   始端と終端も含めるので+3
        CombineInstance[] combineInstanceAry = new CombineInstance[variables.trapezoidDivisionNum + 3];

        //メッシュ作成
        for (DivisionNum = 0; DivisionNum <= variables.trapezoidDivisionNum; DivisionNum++)
        {
            //頂点計算
            CalcVertices();

            if (DivisionNum == 0)
            {
                //最初の一枚だけ別計算
                //メッシュ作成
                Mesh meshFirst = new Mesh();
                //メッシュリセット
                meshFirst.Clear();
                //メッシュへの頂点情報の追加
                meshFirst.vertices = StartVertex;
                //メッシュへの面情報の追加
                meshFirst.triangles = EndFace;

                // 合成するMesh(同じMeshを円形に並べたMesh)
                combineInstanceAry[0].mesh      = meshFirst;
                combineInstanceAry[0].transform = Matrix4x4.Translate(transform.position);
            }
            Mesh mesh = new Mesh();
            //メッシュリセット
            mesh.Clear();
            //メッシュへの頂点情報の追加
            mesh.vertices = SideVertex;
            //メッシュへの面情報の追加
            mesh.triangles = SideFace;

            //合成するMesh(同じMeshを円形に並べたMesh)
            combineInstanceAry[DivisionNum + 1].mesh      = mesh;
            combineInstanceAry[DivisionNum + 1].transform = Matrix4x4.Translate(transform.position);

            if (DivisionNum == variables.trapezoidDivisionNum)
            {
                //最後の一枚だけ別計算
                //メッシュ作成
                Mesh meshLast = new Mesh();
                //メッシュリセット
                meshLast.Clear();
                //メッシュへの頂点情報の追加
                meshLast.vertices = EndVertex;
                //メッシュへの面情報の追加
                meshLast.triangles = EndFace;

                // 合成するMesh(同じMeshを円形に並べたMesh)
                combineInstanceAry[DivisionNum + 2].mesh      = meshLast;
                combineInstanceAry[DivisionNum + 2].transform = Matrix4x4.Translate(transform.position);
            }
        }
        //合成した(する)メッシュ
        Mesh combinedMesh = new Mesh();

        combinedMesh.name = transform.name;
        combinedMesh.CombineMeshes(combineInstanceAry);
        //内向き法線の計算
        culcNormal(combinedMesh.vertices);

        //メッシュフィルター追加
        MeshFilter mesh_filter = new MeshFilter();

        mesh_filter = this.gameObject.AddComponent <MeshFilter>();
        //メッシュアタッチ
        mesh_filter.mesh = combinedMesh;
        //レンダラー追加 + マテリアルアタッチ
        meshRenderer          = this.gameObject.AddComponent <MeshRenderer>();
        meshRenderer.material = variables.material_TrapezoidPole_Normal;
        //コライダーアタッチ
        meshCollider            = this.gameObject.AddComponent <MeshCollider>();
        meshCollider.sharedMesh = mesh_filter.mesh;
        meshCollider.convex     = true;
        meshCollider.isTrigger  = true;

        //NormalMapの再計算
        mesh_filter.mesh.RecalculateNormals();

        //XRじゃないなら
        if (!variables.isOnXR)
        {
            //暫定当たり判定用Event Trigger
            //イベントトリガーのアタッチと初期化
            EventTrigger currentTrigger = this.gameObject.AddComponent <EventTrigger>();
            currentTrigger.triggers = new List <EventTrigger.Entry>();

            //侵入イベント用
            //侵入時に色を変える
            //イベントトリガーのトリガーイベント作成
            EventTrigger.Entry entry1 = new EventTrigger.Entry();
            entry1.eventID = EventTriggerType.PointerEnter;
            entry1.callback.AddListener((x) => OnMouseEnterOwnMade());  //ラムダ式の右側は追加するメソッド
            //トリガーイベントのアタッチ
            currentTrigger.triggers.Add(entry1);
            //侵入終了時に色を戻す
            EventTrigger.Entry entry2 = new EventTrigger.Entry();
            entry2.eventID = EventTriggerType.PointerExit;
            entry2.callback.AddListener((x) => OnMouseExitOwnMade());
            currentTrigger.triggers.Add(entry2);
        }

        //テキスト表示
        make3Dtext();

        //縁取り
        lineRenderer = this.gameObject.AddComponent <LineRenderer>();
        //ローカルで描画
        lineRenderer.useWorldSpace = false;
        //頂点数
        lineRenderer.positionCount = lineVertecies.Length;
        //幅
        lineRenderer.startWidth = variables.lineRendererWidth;
        //順番の格納
        SetLineVertecies();
        lineRenderer.SetPositions(lineVertecies);
        //線の折れる部分の丸み具合
        lineRenderer.numCornerVertices = 20;
        //線の端の丸み具合
        lineRenderer.numCapVertices = 20;
        //線の色
        lineRenderer.material = variables.material_LineRenderer;
        //影を発生させない
        lineRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
        //影の影響を受けない
        lineRenderer.receiveShadows = false;

        //クリエイト元を親にする
        transform.parent = createSorce.gameObject.transform;
    }