質問するログイン新規登録

回答編集履歴

1

追記

2017/12/25 23:41

投稿

fiveHundred
fiveHundred

スコア10539

answer CHANGED
@@ -1,3 +1,46 @@
1
1
  verticesにCamera.main.ScreenToWorldPoint()の結果を代入しておりますが、スコープから察するにverticesはどこにも使われていない気がします。
2
2
  (このソースの場合、verticesはif文の中でのみ有効です。もし、外部で使用したい場合はif文の外で定義する必要があります)
3
- verticesにすべきところをmouseposにしているからではないでしょうか?
3
+ verticesにすべきところをmouseposにしているからではないでしょうか?
4
+
5
+ ---
6
+
7
+ コメントを受けて追記:
8
+
9
+ あなたと私でこのスクリプトをアタッチしているゲームオブジェクトが違っていたみたいです。
10
+ 私は(0, 0, 0)の位置に空のゲームオブジェクトを配置して、それにアタッチしていました。
11
+
12
+ 以下のようにすることで、アタッチしたオブジェクトに関わらず、私が意図した通りの位置に配置できるようになります。
13
+
14
+ ```C#
15
+ GameObject meshGameObj = null;
16
+
17
+ void Update()
18
+ {
19
+ mousePressed();
20
+ if (hitNum > 3 && meshGameObj == null)
21
+ {//4点以上クリックしていたら
22
+ Vector3[] vertices = new Vector3[4];
23
+ for (int i = 0; i < 4; i++)
24
+ {
25
+ vertices[i] = Camera.main.ScreenToWorldPoint(mousepos[i]);//頂点座標を絶対座標に変換した
26
+ }
27
+
28
+ int[] triangles = { 0, 1, 2, 0, 2, 3 };
29
+ Mesh mesh = new Mesh();
30
+ mesh.vertices = vertices;
31
+ mesh.triangles = triangles;
32
+ mesh.RecalculateNormals();
33
+ meshGameObj = new GameObject();
34
+ meshGameObj.transform.position = Vector3.zero;
35
+ meshGameObj.transform.rotation = Quaternion.identity;
36
+ MeshFilter meshFilter = meshGameObj.GetComponent<MeshFilter>();
37
+ if (!meshFilter)
38
+ meshFilter = meshGameObj.AddComponent<MeshFilter>();
39
+ MeshRenderer meshRenderer = meshGameObj.GetComponent<MeshRenderer>();
40
+ if (!meshRenderer)
41
+ meshRenderer = meshGameObj.AddComponent<MeshRenderer>();
42
+ meshFilter.mesh = mesh;
43
+ meshRenderer.sharedMaterial = material;
44
+ }
45
+ }
46
+ ```