回答編集履歴

2

衝突対象に関係なく特定のオブジェクトに関連付けられたメソッドを呼び出したいようなのでそれに関する説明を追加

2019/08/22 16:08

投稿

Ram.Type-0
Ram.Type-0

スコア424

test CHANGED
@@ -13,3 +13,33 @@
13
13
  ```
14
14
 
15
15
  とする必要があります。単にGetComponent<CC>()だとcolはガン無視して自分自身からCCを取得することになり、当然CCは自分にはついてないのでnullが返って来てそれがcに代入され、c.Cscを参照した時点でcがnullなのでNullReferenceExceptionが出ます。
16
+
17
+
18
+
19
+ 追記
20
+
21
+
22
+
23
+ 上のは衝突した相手からCCコンポーネントを取得したい場合の例です。
24
+
25
+ 衝突した相手に関係なく常に特定のオブジェクトのCCコンポーネントを呼び出したい場合は、
26
+
27
+
28
+
29
+ ```C#
30
+
31
+ [SerializeField]
32
+
33
+ CC c;
34
+
35
+ void OnCollisionEnter(Collision col)
36
+
37
+ {
38
+
39
+ c.Csc();
40
+
41
+ }
42
+
43
+ ```
44
+
45
+ とクラスのフィールドとしてCCを定義し、インスペクターから事前に対象のオブジェクトを指定しておけば良いです。

1

サンプルコードが一部OnTriggerEnterの場合になっていたため修正

2019/08/22 16:08

投稿

Ram.Type-0
Ram.Type-0

スコア424

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  {
6
6
 
7
- CC c= col.GetComponent<CC>();
7
+ CC c= col.collider.GetComponent<CC>();
8
8
 
9
9
  c.Csc();
10
10