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

回答編集履歴

2

修正

2020/10/22 05:36

投稿

i_zna
i_zna

スコア198

answer CHANGED
@@ -14,7 +14,7 @@
14
14
  ```上のコードではStart()内でインスタンス変数のImage imgには何も代入していないのでnullのままです。
15
15
  こういう混同を避けるために変数名は違うものを使うといいと思います。
16
16
  ```C#
17
- public Image img;
17
+ private Image img;
18
18
  void Start()
19
19
  {
20
20
  GameObject imgObject = GameObject.Find("Image");

1

追記

2020/10/22 05:36

投稿

i_zna
i_zna

スコア198

answer CHANGED
@@ -1,2 +1,29 @@
1
1
  基本的にはメソッドの中にメソッドは入りません。
2
- ```OnCollisionEnter(Collision collision)``````Update()```から出してみてください。
2
+ OnCollisionEnter(Collision collision) Update() から出してみてください。
3
+
4
+ ---追記---
5
+
6
+ 質問編集前のコードの問題は修正されたものと思って色々見落としました。すみません。
7
+ ```C#
8
+ private Image img;
9
+ void Start()
10
+ {
11
+ GameObject img = GameObject.Find("Image");
12
+ img.GetComponent<Image>().color = new Color (1f, 1f, 1f, 0f);
13
+ }
14
+ ```上のコードではStart()内でインスタンス変数のImage imgには何も代入していないのでnullのままです。
15
+ こういう混同を避けるために変数名は違うものを使うといいと思います。
16
+ ```C#
17
+ public Image img;
18
+ void Start()
19
+ {
20
+ GameObject imgObject = GameObject.Find("Image");
21
+ img = imgObject.GetComponent<Image>();
22
+ img.color = new Color (1f, 1f, 1f, 0f);
23
+ }
24
+ ```コンポーネントからコンポーネントを取得する必要はないのでOnCollisionEnter()内の
25
+ img.GetComponent<Image>().color= は img.color= に戻してください。
26
+
27
+ また、エラーが出ていないということは衝突も検出されていないということになります。
28
+ Rigidbodyを両方Kinematicにしているということですが、Kinematic同士の衝突はデフォルトでは検出しません。
29
+ 片方のKinematicを外すかProject Settings -> Physics -> Contact Pairs Modeを変えるかする必要があります。