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); } } }
private void Awake() { createSorce = GameObject.Find("central").GetComponent <createTrapezoidPole>(); systemScript = GameObject.Find("central").GetComponent <centralSystem>(); }
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; }
private void Awake() { systemScript = GameObject.Find("central").GetComponent <centralSystem>(); }
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; }