質問編集履歴

2

修正

2021/08/02 08:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  追記
6
6
 
7
- コードが多くて全て載せると見ずらいと思ったので該当する場所だけ載せときます。Unityゲーム開発#Dオンラインアクションゲームの作り方という参考書の11章の内容です。Transform attackTargetは最初に定義だけされていて、コライダーとの衝突で設定されるようです。
7
+ コードが多くて全て載せると見ずらいと思ったので該当する場所だけ載せときます。Unityゲーム開発オンライン3Dアクションゲームの作り方という参考書の11章の内容です。Transform attackTargetは最初に定義だけされていて、コライダーとの衝突で設定されるようです。
8
8
 
9
9
 
10
10
 

1

修正

2021/08/02 08:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1 +1,79 @@
1
1
  勉強をしていたらif(attackTarget)というコードが出てきたのですが、Transform型でattackTargetは定義されていました。bool型でもないし、演算子もないのに、どうしてこれで条件分岐するのか分かりません。nullならfalse、何か代入されていればtrueということなのでしょうか。
2
+
3
+
4
+
5
+ 追記
6
+
7
+ コードが多くて全て載せると見ずらいと思ったので該当する場所だけ載せときます。Unityゲーム開発#Dオンラインアクションゲームの作り方という参考書の11章の内容です。Transform attackTargetは最初に定義だけされていて、コライダーとの衝突で設定されるようです。
8
+
9
+
10
+
11
+ ```c#
12
+
13
+ void Walking()
14
+
15
+ {
16
+
17
+ // 待機時間がまだあったら
18
+
19
+ if (waitTime > 0.0f)
20
+
21
+ {
22
+
23
+ // 待機時間を減らす
24
+
25
+ waitTime -= Time.deltaTime;
26
+
27
+ // 待機時間が無くなったら
28
+
29
+ if (waitTime <= 0.0f)
30
+
31
+ {
32
+
33
+ // 範囲内の何処か
34
+
35
+ Vector2 randomValue = Random.insideUnitCircle * walkRange;
36
+
37
+ // 移動先の設定 y座標はCharacterMove内で最初に0に設定される。現在地に足しているので、z座標は足さなくてもランダムに移動する
38
+
39
+ Vector3 destinationPosition = basePosition + new Vector3(randomValue.x, 0.0f, randomValue.y);
40
+
41
+ // 目的地の指定.
42
+
43
+ SendMessage("SetDestination", destinationPosition);
44
+
45
+ }
46
+
47
+ }
48
+
49
+ else
50
+
51
+ {
52
+
53
+ // 目的地へ到着
54
+
55
+ if (characterMove.Arrived())
56
+
57
+ {
58
+
59
+ // 待機状態へ
60
+
61
+ waitTime = Random.Range(waitBaseTime, waitBaseTime * 2.0f);
62
+
63
+ }
64
+
65
+ // ターゲットを発見したら追跡
66
+
67
+ if (attackTarget)
68
+
69
+ {
70
+
71
+ ChangeState(State.Chasing);
72
+
73
+ }
74
+
75
+ }
76
+
77
+ }
78
+
79
+ ```