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

回答編集履歴

3

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

2020/07/18 18:34

投稿

bboydaisuke
bboydaisuke

スコア5339

answer CHANGED
@@ -3,14 +3,6 @@
3
3
  1. 宣言のない変数があるコードは示さない
4
4
  2. インデントの壊れたコードは示さない
5
5
 
6
- > 1,ターゲットのいない時は一定の向きに飛ぶ
7
-
8
- こちらは(「一定の向き」の速度ベクトルが定義されていないため)現状から少し変えるだけでは実装できないので、
9
-
10
- > 3,ターゲットがなくなった際に現在動いている方向に直進して抜けていく
11
-
12
- これについて示しておきます。
13
-
14
6
  ```csharp
15
7
  using UnityEngine;
16
8
 
@@ -20,7 +12,7 @@
20
12
  Rigidbody2D rigid;
21
13
  GameObject target;
22
14
  Vector3 acceleration;
23
- float period = 2f;
15
+ float period = 3f;
24
16
  Vector3 velocity;
25
17
 
26
18
  void Start()
@@ -28,6 +20,7 @@
28
20
  position = transform.position;
29
21
  rigid = GetComponent<Rigidbody2D>();
30
22
  target = GameObject.FindWithTag("Enemy");
23
+ velocity = new Vector3(3f, 5f, 0); // 初速
31
24
  }
32
25
 
33
26
  void Update()
@@ -41,16 +34,20 @@
41
34
  if (target && target.activeSelf)
42
35
  {
43
36
  var diff = target.transform.position - transform.position; //ターゲットとの距離
37
+
44
38
  acceleration += (diff - velocity * period) * 2f / (period * period); //加速度a = 2(d-vt) / t*t
39
+
45
40
  period -= Time.deltaTime; //period秒後に着弾
46
-
47
41
  if (period < 0f)
48
42
  {
49
43
  return;
50
44
  }
51
-
52
45
  velocity += acceleration * Time.deltaTime; //v = at
53
46
  }
47
+ else if (!target)
48
+ {
49
+ target = GameObject.FindWithTag("Enemy");
50
+ }
54
51
 
55
52
  position += velocity * Time.deltaTime; //d = vt
56
53
  transform.position = position;

2

補足の追加

2020/07/18 18:33

投稿

bboydaisuke
bboydaisuke

スコア5339

answer CHANGED
@@ -3,6 +3,10 @@
3
3
  1. 宣言のない変数があるコードは示さない
4
4
  2. インデントの壊れたコードは示さない
5
5
 
6
+ > 1,ターゲットのいない時は一定の向きに飛ぶ
7
+
8
+ こちらは(「一定の向き」の速度ベクトルが定義されていないため)現状から少し変えるだけでは実装できないので、
9
+
6
10
  > 3,ターゲットがなくなった際に現在動いている方向に直進して抜けていく
7
11
 
8
12
  これについて示しておきます。

1

注釈の追加

2020/07/18 18:14

投稿

bboydaisuke
bboydaisuke

スコア5339

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