回答編集履歴

3

コードの修正、不必要な記述の削除

2020/07/18 18:34

投稿

bboydaisuke
bboydaisuke

スコア5308

test CHANGED
@@ -5,22 +5,6 @@
5
5
  1. 宣言のない変数があるコードは示さない
6
6
 
7
7
  2. インデントの壊れたコードは示さない
8
-
9
-
10
-
11
- > 1,ターゲットのいない時は一定の向きに飛ぶ
12
-
13
-
14
-
15
- こちらは(「一定の向き」の速度ベクトルが定義されていないため)現状から少し変えるだけでは実装できないので、
16
-
17
-
18
-
19
- > 3,ターゲットがなくなった際に現在動いている方向に直進して抜けていく
20
-
21
-
22
-
23
- これについて示しておきます。
24
8
 
25
9
 
26
10
 
@@ -42,7 +26,7 @@
42
26
 
43
27
  Vector3 acceleration;
44
28
 
45
- float period = 2f;
29
+ float period = 3f;
46
30
 
47
31
  Vector3 velocity;
48
32
 
@@ -57,6 +41,8 @@
57
41
  rigid = GetComponent<Rigidbody2D>();
58
42
 
59
43
  target = GameObject.FindWithTag("Enemy");
44
+
45
+ velocity = new Vector3(3f, 5f, 0); // 初速
60
46
 
61
47
  }
62
48
 
@@ -84,11 +70,13 @@
84
70
 
85
71
  var diff = target.transform.position - transform.position; //ターゲットとの距離
86
72
 
73
+
74
+
87
75
  acceleration += (diff - velocity * period) * 2f / (period * period); //加速度a = 2(d-vt) / t*t
88
76
 
89
- period -= Time.deltaTime; //period秒後に着弾
90
77
 
91
78
 
79
+ period -= Time.deltaTime; //period秒後に着弾
92
80
 
93
81
  if (period < 0f)
94
82
 
@@ -98,9 +86,15 @@
98
86
 
99
87
  }
100
88
 
89
+ velocity += acceleration * Time.deltaTime; //v = at
101
90
 
91
+ }
102
92
 
93
+ else if (!target)
94
+
95
+ {
96
+
103
- velocity += acceleration * Time.deltaTime; //v = at
97
+ target = GameObject.FindWithTag("Enemy");
104
98
 
105
99
  }
106
100
 

2

補足の追加

2020/07/18 18:33

投稿

bboydaisuke
bboydaisuke

スコア5308

test CHANGED
@@ -5,6 +5,14 @@
5
5
  1. 宣言のない変数があるコードは示さない
6
6
 
7
7
  2. インデントの壊れたコードは示さない
8
+
9
+
10
+
11
+ > 1,ターゲットのいない時は一定の向きに飛ぶ
12
+
13
+
14
+
15
+ こちらは(「一定の向き」の速度ベクトルが定義されていないため)現状から少し変えるだけでは実装できないので、
8
16
 
9
17
 
10
18
 

1

注釈の追加

2020/07/18 18:14

投稿

bboydaisuke
bboydaisuke

スコア5308

test CHANGED
@@ -5,6 +5,14 @@
5
5
  1. 宣言のない変数があるコードは示さない
6
6
 
7
7
  2. インデントの壊れたコードは示さない
8
+
9
+
10
+
11
+ > 3,ターゲットがなくなった際に現在動いている方向に直進して抜けていく
12
+
13
+
14
+
15
+ これについて示しておきます。
8
16
 
9
17
 
10
18