前提・実現したいこと
Unityで三角柱~六角柱を作成したくて下記のScriptをオブジェクトに入れると作成はできるのですが
当たり判定が最初に入れた時点のオブジェクトのものになってしまい変更されないです
自分なりにがんばったのですがわからなくて教えてほしいです
Unityを触り始めたばかりなのでわかりやすく説明してほしいです
発生している問題・エラーメッセージ
図形の作成後、実行前のオブジェクトの当たり判定しか作成できない
該当のソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshFilter))]
public class Hexagonal : MonoBehaviour
{
[SerializeField] private Material _mat; // Use this for initialization void Start() { const float root = 0.866025f; var mesh = new Mesh(); Vector3[] positions = new Vector3[] { /* Z軸視点 */ // Top new Vector3 ( 0f, 0f, 0f), //0 new Vector3 (-0.5f, -root, 0f), //1 new Vector3 ( -1f, 0f, 0f), //2 new Vector3 (-0.5f, root, 0f), //3 new Vector3 ( 0.5f, root, 0f), //4 new Vector3 ( 1f, 0f, 0f), //5 new Vector3 ( 0.5f, -root, 0f), //6 // Bottom new Vector3 ( 0f, 0f, 1f), //7 new Vector3 (-0.5f, -root, 1f), //8 new Vector3 ( -1f, 0f, 1f), //9 new Vector3 (-0.5f, root, 1f), //10 new Vector3 ( 0.5f, root, 1f), //11 new Vector3 ( 1f, 0f, 1f), //12 new Vector3 ( 0.5f, -root, 1f), //13 }; //面の生成(数値は生成した順の頂点座標)3つで三角ポリゴンの生成(3つ以外不可能) int[] vertIndices = new int[] { //X視点から見た上下左右表裏記載 //左 0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 6, 0, 6, 1, //右 9, 8, 7, 10, 9, 7, 11, 10, 7, 12, 11, 7, 13, 12, 7, 8, 13, 7, //面A 1, 6, 8, 8, 6,13, //面B 6, 5,13, 13,5,12, //面C 5, 4,12, 12,4,11, //面D 4, 3,11, 11,3,10, //面E 3, 2,10, 10,2, 9, //面F 2, 1, 9, 9, 1, 8, }; Vector3[] vertices = new Vector3[vertIndices.Length]; for (int i = 0; i < vertIndices.Length; i++) { vertices[i] = positions[vertIndices[i]]; } mesh.vertices = vertices; int[] triangles = new int[mesh.vertices.Length]; for (int i = 0; i < mesh.vertices.Length; i++) { triangles[i] = i; } mesh.triangles = triangles; Vector2[] uvSources = new Vector2[] { }; Vector2[] uvs = new Vector2[uvSources.Length]; for (int i = 0; i < uvSources.Length; i++) { uvs[i] = uvSources[i]; } mesh.uv = uvs; mesh.RecalculateNormals(); var filter = GetComponent<MeshFilter>(); filter.sharedMesh = mesh; var renderer = GetComponent<MeshRenderer>(); renderer.material = _mat; gameObject.AddComponent<MeshCollider>(); }
}
C#
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/04 12:30