質問編集履歴
1
読みにくかったので
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
●何がしたいか
|
1
|
+
### **●何がしたいか**
|
2
2
|
複数のオブジェクトが画面中にランダムに登場し、それらをクリックするとポイントが加算されるゲームを作ろうとしています
|
3
3
|
オブジェクトがクリックされた時の反応として、ポイントの加算・オブジェクトが消える・2つに増える・色が変わる等があります
|
4
4
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
eventtriggerのOnclickの方は何故かクリック範囲とコライダーの形が合わなかったので断念しました
|
7
7
|
また、RayCastの方がなんとなく応用が広そうに見えました
|
8
8
|
|
9
|
-
●何を解決したいか?
|
9
|
+
### **●何を解決したいか?**
|
10
10
|
例えば、ObjectAにRayがHitした時に、ObjectAに付いているScriptAの関数Clicked()を実行する場合
|
11
11
|
hit.collider.gameObject.GetComponent<ScriptA>().Clicked();
|
12
12
|
となります
|
@@ -30,9 +30,10 @@
|
|
30
30
|
このように条件分岐も必要になり関数も膨らみ管理がしんどくなってしまいます
|
31
31
|
|
32
32
|
そこで、Rayがhitしたという判定だけを使って受け手側の関数を呼び出せないかと考えています
|
33
|
+
|
33
|
-
具体的には
|
34
|
+
### **具体的には**
|
34
|
-
・RayはColliderにhitしているので、Rayを受ける側のオブジェクトでOnTriggerEnterか何か
|
35
|
+
**・RayはColliderにhitしているはずなので、Rayを受ける側のオブジェクトでOnTriggerEnterか何か**
|
35
|
-
・hit.collider.gameObject.イベントトリガーとかに何かする
|
36
|
+
**・hit.collider.gameObject.イベントトリガーとかに何かする**
|
36
37
|
等で実装できればと思うのですが、それらしい情報にたどり着けません
|
37
38
|
|
38
39
|
|
@@ -48,8 +49,8 @@
|
|
48
49
|
}
|
49
50
|
}
|
50
51
|
```
|
51
|
-
こんな感じのスクリプトを全てのオブジェクトに付ければ一応動くのですが、1000個2000個と出た場合にRayを飛ばすだけで負担になる事もある
|
52
|
+
こんな感じのスクリプトを全てのオブジェクトに付ければ一応動くのですが、1000個2000個と出た場合にRayを飛ばすだけで負担になる事もあるらしく、避けたいです
|
52
53
|
|
53
54
|
|
54
|
-
出来る限り
|
55
|
+
出来る限り照射されるRayは1つ、全てのオブジェクトはRayを当てられた時に処理をするだけという状態にしたいと考えています
|
55
56
|
こういった内容はどのように実装するべきでしょうか?
|