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

質問編集履歴

2

2018/12/03 23:50

投稿

Kagenui219245
Kagenui219245

スコア17

title CHANGED
File without changes
body CHANGED
File without changes

1

前回質問したものがよろしくなかったので再編集しました。

2018/12/03 23:50

投稿

Kagenui219245
Kagenui219245

スコア17

title CHANGED
@@ -1,1 +1,1 @@
1
- UnityのhingeJoint機能の接続先をスクリプトで設定したい
1
+ UnityのfixedJoint機能の接続先をスクリプトで設定したい
body CHANGED
@@ -1,2 +1,42 @@
1
- UnityはCUBEにJointをスクリプトると接続先設定されていないめ、Worldに引っ付いてしまいCUBEがその位置固定れまよね
1
+ やりたいことですonotchi_ (id:onoty3d)さんという方作成されていたプログラムコードを用いて、生成したCube同士をfixedJoint接続せたいです。
2
+ onotchi_ (id:onoty3d)さんのサイト↓
2
- その接続先をCUBEが2個隣同士で並んでいたとして、隣のCUBEにJointを接続し、CUBEを引っつけたい時は、その隣のCUBEの座標を取得して、接続先の座標として設定するのが良いのでしょうか?他に良い方法がありましたら教えてください!
3
+ http://onoty3d.hatenablog.com/entry/2017/06/11/190909
4
+
5
+ やったことなのですが、VoxelGeneratr.cs内のpraibate void SpawnVoxel()のコードに以下のことを追加してみました。
6
+
7
+ ・生成されたCubeにRigidbodyとFixedJointをAddComponent
8
+ ・cuountでvoxelの個数表示
9
+ ・生成したときにnameを変える(connectedBodyで名前指定ができると考えたので)
10
+
11
+ Rigidbody rb;
12
+ int count = 0;
13
+ int i = 1;
14
+ private void SpawnVoxel()
15
+ {
16
+ var voxel = GameObject.CreatePrimitive(PrimitiveType.Cube);
17
+
18
+ voxel.layer = (int)Mathf.Log(this.VoxelLayer.value, 2);
19
+ voxel.transform.position = this._transform.position + this._voxelPosition;
20
+ voxel.transform.localScale = this._voxelScale;
21
+ if (count < i)
22
+ {
23
+ Debug.Log("Cube" + count);
24
+ count += 1;
25
+ i += 1;
26
+ voxel.name = "Cube" + count;
27
+ }
28
+
29
+ //重力を設定
30
+ rb = voxel.gameObject.AddComponent<Rigidbody>();
31
+ rb.isKinematic = true;
32
+ //結合先を設定
33
+ fixedJoint = voxel.AddComponent<FixedJoint>();
34
+ fixedJoint.connectedBody =voxel.GetComponent<Rigidbody>();
35
+
36
+
37
+ voxel.transform.SetParent(this.Parent);
38
+ }
39
+
40
+ 他にもfind(name)など調べ、追加してみたのですがうまくいきませんでした。
41
+ Unityが初めてで見当違いなことを言ってしまっていたり、変なコードを記述していたらすいません。
42
+ どうかよろしくお願いします。