回答編集履歴
1
分かりづらい表現が幾つかあったため修正、また画像を用いることでより分かりやすいように
test
CHANGED
@@ -1,33 +1,53 @@
|
|
1
|
-
BP_Coinの変数が変数宣言されただけで参照を入
|
1
|
+
BP_Coinの変数が変数宣言されただけで参照を代入していないのでアクセス時に参照が無く、エラーが発生しています。
|
2
|
+
|
3
|
+
エラーが出ないようにするにはフィールド上に存在するBP_Coinを取得して代入してやる必要がありますが
|
4
|
+
|
5
|
+
恐らくコインはレベル上に複数あるものだと思われますのでこのままだとちゃんと動かないことが予想されます。
|
2
6
|
|
3
7
|
|
4
8
|
|
5
|
-
|
9
|
+
今回の用途はおそらくコイン取得時にプレイヤーに対してスコアアップを要求する、といった処理だと思われるので
|
6
10
|
|
7
|
-
|
11
|
+
ディスパッチャーの使用用途としては適切ではないと思われるので今回は無理をして使う必要はないかと思います。
|
8
12
|
|
9
13
|
|
10
14
|
|
15
|
+
ディスパッチャーは多数のオブジェクトが特定の一つのオブジェクトの状態を監視する。という場合に使用されます。
|
16
|
+
|
11
|
-
|
17
|
+
特定の一つのオブジェクトの状態が変化したら監視しているオブジェクト達に一斉に情報が伝わるという感覚です。
|
18
|
+
|
19
|
+
(監視カメラとセキュリティルームを例に例えるとセキュリティールームの電源がOFFになるとセキュリティールームがわざわざ各監視カメラに情報を伝えなくても、監視カメラは連動して電源をOFFにする、、、といったイメージです)
|
12
20
|
|
13
21
|
|
14
22
|
|
15
|
-
コイン
|
23
|
+
今回質問主さんが行われているプレイヤーが複数のコインの状態を監視するのはダメではないですが、
|
24
|
+
|
25
|
+
多の情報を一に伝えたい(ディスパッチャーと比べて情報の移動方向が逆に近い)のでディスパッチャーである必要性が薄く別の方法をお勧めします。
|
16
26
|
|
17
27
|
|
18
28
|
|
19
|
-
|
29
|
+
こういった場合はインターフェースを用いれば解決できますが、
|
20
30
|
|
21
|
-
|
31
|
+
今回はプレイヤーという特定のオブジェクトに対して情報を渡したいだけなので、愚直にCastを使用した解決法を提示します。
|
22
32
|
|
23
33
|
|
24
34
|
|
25
|
-
|
35
|
+
## 以下は別解
|
26
36
|
|
27
37
|
|
28
38
|
|
29
|
-
|
39
|
+
今回のやりたいことの本質はコインからThirdPersonCharacterBPの関数を呼び出したいと判断しました。
|
30
40
|
|
31
41
|
|
32
42
|
|
43
|
+
BP_CoinがOverlapしたActorをThirdPersonCharacterにCastしてThirdPersonCharacterの関数を呼び出すのが良いと思います。
|
44
|
+
|
45
|
+
|
46
|
+
|
33
|
-
わから
|
47
|
+
文面だけだとわかりづらいかもしれませんので例の画像を用意しました
|
48
|
+
|
49
|
+
画像例だと、ThirdPersonCharacterBPにAddScoreという関数を用意し、内部ではスコア加算処理をしているものとします。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
![イメージ](04917ec2abdedb29f1dba9e666b2a8fd.jpeg)
|