質問編集履歴

10

era-

2021/04/21 09:45

投稿

Um_kok
Um_kok

スコア39

test CHANGED
@@ -1 +1 @@
1
- unity2d 角度をランダムに決めランダムな移動
1
+ unity2d 角度をランダムに決めランダムな移動をする。
test CHANGED
File without changes

9

えい

2021/04/21 09:45

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -198,6 +198,6 @@
198
198
 
199
199
  現在下手ながらもコードを書いたのですが、挙動を直したいです。
200
200
 
201
- ・回転の角度変更をゆっくりにする。
201
+ **・回転の角度変更をゆっくりにする(今の状態だとかくかくしている)**
202
202
 
203
203
  やり方のヒントでも良いので教えてもらえないでしょうか?こんな感じみたいなコードを貰えると嬉しいです。

8

おういえす

2021/04/21 08:34

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -182,7 +182,7 @@
182
182
 
183
183
  実装したいのは敵のAIです。
184
184
 
185
- ・範囲内に敵が入っているのならば追従
185
+ ・範囲内に敵が入っているのならば追従(追従は後でやります。)
186
186
 
187
187
  ・入っていないならばランダムに角度を変え移動
188
188
 

7

えい

2021/04/21 07:42

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -196,14 +196,6 @@
196
196
 
197
197
  ![イメージ説明](b758510168e1ef9ca2c838279b06b761.png)
198
198
 
199
- この向き(Y軸)で追従をしたいが
200
-
201
- ![イメージ説明](528f1bff6eb067a7effab5eed021fed3.png)
202
-
203
- そのままの角度で追従してしまう
204
-
205
- ![イメージ説明](ac3f72b2b07a68decc9d2d4e6b153d29.png)
206
-
207
199
  現在下手ながらもコードを書いたのですが、挙動を直したいです。
208
200
 
209
201
  ・回転の角度変更をゆっくりにする。

6

era-NullReferenceException: Object reference not set to an instance of an object PlayerMove.Update (

2021/04/21 07:41

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -156,6 +156,8 @@
156
156
 
157
157
  スクリプタブルオブジェクトを使ってみたかったので使っています。
158
158
 
159
+
160
+
159
161
  ```C#
160
162
 
161
163
  [CreateAssetMenu(fileName = "Enemy", menuName = "ScriptableObjects/CreateAsset")]

5

おういえす

2021/04/21 07:40

投稿

Um_kok
Um_kok

スコア39

test CHANGED
@@ -1 +1 @@
1
- unity2d ランダムな移動と範囲内にプレイヤーが入っているならば追従
1
+ unity2d 角度をランダムに決めランダムな移動
test CHANGED
@@ -1,6 +1,6 @@
1
- プレイヤーが範囲に入っていなかったらランダムに回転して移動します。それを繰り返す。
1
+ ランダムに回転して移動します。それを繰り返す。
2
-
3
- プレイヤーが入ってきたら追従をしたいです。
2
+
3
+
4
4
 
5
5
 
6
6
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```C#
10
10
 
11
- public class Enemy_Move : MonoBehaviour
11
+ public class Enemy_Move : RandomMove
12
12
 
13
13
  {
14
14
 
@@ -34,8 +34,6 @@
34
34
 
35
35
  {
36
36
 
37
- direction = TurnAround();
38
-
39
37
  my_Vec = transform;
40
38
 
41
39
  my_Vec.rotation = direction;
@@ -50,9 +48,9 @@
50
48
 
51
49
 
52
50
 
53
- my_Vec.position += (enemyColl.playerPos - transform.position) * enemy.enemy_Speed;
51
+ //my_Vec.position += (enemyColl.playerPos - transform.position) * enemy.enemy_Speed;
54
-
52
+
55
- transform.position += my_Vec.position * Time.deltaTime;
53
+ //transform.position += my_Vec.position * Time.deltaTime;
56
54
 
57
55
  }
58
56
 
@@ -60,49 +58,95 @@
60
58
 
61
59
 
62
60
 
61
+ base.RandomMoveOn();
62
+
63
+
64
+
65
+
66
+
63
67
  timeCount += Time.deltaTime;
64
68
 
65
69
  if (timeCount >= maxTime) {// 指定時間後、向きを変える
66
70
 
67
71
 
68
72
 
69
- transform.rotation = TurnAround();
73
+ StartCoroutine(base.RandomRot());
70
74
 
71
75
  timeCount = 0;
72
76
 
73
77
  }
74
78
 
75
- //var a = transform;
79
+
76
-
77
- //a.up *= enemy.enemy_Speed;
78
-
79
- //transform.position = a;
80
80
 
81
81
  }
82
82
 
83
83
  }
84
84
 
85
+ }
86
+
87
+
88
+
89
+ ```
90
+
91
+ RandomMove
92
+
93
+ ```C#
94
+
95
+ public class RandomMove : MonoBehaviour
96
+
97
+ {
98
+
85
99
  /// <summary>
86
100
 
87
- /// 向きを変更
101
+ /// ランダムな角度
88
102
 
89
103
  /// </summary>
90
104
 
91
105
  /// <returns></returns>
92
106
 
107
+ public virtual IEnumerator RandomRot() {
108
+
109
+
110
+
93
- Quaternion TurnAround() {
111
+ Quaternion trans = transform.rotation; ;
94
-
95
-
96
-
97
- Quaternion trans;
98
112
 
99
113
  float random_Z = Random.Range(180f, -180f);
100
114
 
115
+ trans.z = Mathf.LerpAngle(transform.localRotation.z, random_Z, 1f);
116
+
117
+
118
+
101
119
  trans = Quaternion.Euler(0, 0, random_Z);
102
120
 
103
-
121
+ this.gameObject.transform.rotation = trans;
104
-
122
+
123
+
124
+
105
- return trans;
125
+ yield break;
126
+
127
+ }
128
+
129
+ /// <summary>
130
+
131
+ /// ランダムに移動
132
+
133
+ /// </summary>
134
+
135
+ public virtual void RandomMoveOn() {
136
+
137
+
138
+
139
+ float speed;// 移動スピード
140
+
141
+ float speed_Max = 4f;
142
+
143
+ Transform myTransform = this.transform;
144
+
145
+
146
+
147
+ speed = Random.Range(0, speed_Max);
148
+
149
+ myTransform.Translate(0, speed * Time.deltaTime, 0);
106
150
 
107
151
  }
108
152
 
@@ -110,75 +154,25 @@
110
154
 
111
155
 
112
156
 
157
+ スクリプタブルオブジェクトを使ってみたかったので使っています。
158
+
159
+ ```C#
160
+
161
+ [CreateAssetMenu(fileName = "Enemy", menuName = "ScriptableObjects/CreateAsset")]
162
+
163
+ public class Enemy_Status : ScriptableObject
164
+
165
+ {
166
+
167
+ public float enemy_Speed = 0.1f;// スピード
168
+
169
+ }
170
+
113
171
  ```
114
172
 
115
- 敵のコライダーについているコード
116
-
117
- ```C#
118
-
119
- public class Enemy_Collision : MonoBehaviour
120
-
121
- {
122
-
123
- public bool follow { get; private set; }// フォロー中か?
124
-
125
- public Vector3 playerPos { get; private set; }//プレイヤーの座標
126
-
127
-
128
-
129
- private void OnTriggerStay2D(Collider2D collision)
130
-
131
- {
132
-
133
- if (collision.CompareTag("Player")) {
134
-
135
-
136
-
137
- follow = true;
138
-
139
- playerPos = collision.transform.position;
140
-
141
- }
142
-
143
- }
144
-
145
- private void OnTriggerExit2D(Collider2D collision)
146
-
147
- {
148
-
149
- if (collision.CompareTag("Player")) {
150
-
151
-
152
-
153
- follow = false;
154
-
155
- }
156
-
157
- }
158
-
159
- }
160
-
161
- ```
162
-
163
- スクリプタブルオブジェクトを使ってみたかったので使っています。
164
-
165
- ```C#
166
-
167
- [CreateAssetMenu(fileName = "Enemy", menuName = "ScriptableObjects/CreateAsset")]
168
-
169
- public class Enemy_Status : ScriptableObject
170
-
171
- {
172
-
173
- public float enemy_Speed = 0.1f;// スピード
174
-
175
- }
176
-
177
- ```
178
-
179
173
  下手ながらも
180
174
 
181
- 追従と回転をやりました。追従がたまに変になるのと、回転もかかくてしまいます。あとは移動がうまくいきません。(Y方向に進みたい)どうかよろしくお願いします。
175
+ 回転をやりました。回転をゆっしたいす。
182
176
 
183
177
 
184
178
 
@@ -212,8 +206,4 @@
212
206
 
213
207
  ・回転の角度変更をゆっくりにする。
214
208
 
215
- ・移動がうまくいかない。
216
-
217
- ・追従を敵のY軸向きでやりたい。
218
-
219
209
  やり方のヒントでも良いので教えてもらえないでしょうか?こんな感じみたいなコードを貰えると嬉しいです。

4

era-NullReferenceException: Object reference not set to an instance of an object PlayerMove.Update (

2021/04/21 07:39

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -194,15 +194,19 @@
194
194
 
195
195
  敵のAIには二つコライダがついていて、一つはプレイヤーの弾を受け止める方(小さいコライダ)
196
196
 
197
-
197
+ ![イメージ説明](eaa8e0f8abf130f909be8dc6399a2fe6.png)
198
198
 
199
199
  敵の子である二つ目は敵の探索範囲(大きいコライダ)
200
200
 
201
-
201
+ ![イメージ説明](b758510168e1ef9ca2c838279b06b761.png)
202
-
202
+
203
- この向きで追従をしたいが
203
+ この向き(Y軸)で追従をしたいが
204
+
204
-
205
+ ![イメージ説明](528f1bff6eb067a7effab5eed021fed3.png)
206
+
205
-
207
+ そのままの角度で追従してしまう
208
+
209
+ ![イメージ説明](ac3f72b2b07a68decc9d2d4e6b153d29.png)
206
210
 
207
211
  現在下手ながらもコードを書いたのですが、挙動を直したいです。
208
212
 

3

era-NullReferenceException: Object reference not set to an instance of an object PlayerMove.Update (

2021/04/21 00:41

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -194,11 +194,15 @@
194
194
 
195
195
  敵のAIには二つコライダがついていて、一つはプレイヤーの弾を受け止める方(小さいコライダ)
196
196
 
197
- ![![イメージ説明](5bd5d35372c6df1a50b68ddf0ef54b50.png)](ff97743d27f67789441b4b1f1c7bb0ac.png)
197
+
198
198
 
199
199
  敵の子である二つ目は敵の探索範囲(大きいコライダ)
200
200
 
201
+
202
+
201
- ![イメージ説明](048d1df102544e53dbe70fb42dccb4bc.png)
203
+ この向きで追従をしたいが
204
+
205
+
202
206
 
203
207
  現在下手ながらもコードを書いたのですが、挙動を直したいです。
204
208
 

2

era-

2021/04/21 00:35

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -199,3 +199,13 @@
199
199
  敵の子である二つ目は敵の探索範囲(大きいコライダ)
200
200
 
201
201
  ![イメージ説明](048d1df102544e53dbe70fb42dccb4bc.png)
202
+
203
+ 現在下手ながらもコードを書いたのですが、挙動を直したいです。
204
+
205
+ ・回転の角度変更をゆっくりにする。
206
+
207
+ ・移動がうまくいかない。
208
+
209
+ ・追従を敵のY軸向きでやりたい。
210
+
211
+ やり方のヒントでも良いので教えてもらえないでしょうか?こんな感じみたいなコードを貰えると嬉しいです。

1

era-

2021/04/21 00:19

投稿

Um_kok
Um_kok

スコア39

test CHANGED
File without changes
test CHANGED
@@ -179,3 +179,23 @@
179
179
  下手ながらも
180
180
 
181
181
  追従と回転をやりました。追従がたまに変になるのと、回転もかくかくしてしまいます。あとは移動がうまくいきません。(Y方向に進みたい)どうかよろしくお願いします。
182
+
183
+
184
+
185
+ ーーーーーーーーーー追記ーーーーーーーーーーーーーーー
186
+
187
+ 実装したいのは敵のAIです。
188
+
189
+ ・範囲内に敵が入っているのならば追従
190
+
191
+ ・入っていないならばランダムに角度を変え移動
192
+
193
+
194
+
195
+ 敵のAIには二つコライダがついていて、一つはプレイヤーの弾を受け止める方(小さいコライダ)
196
+
197
+ ![![イメージ説明](5bd5d35372c6df1a50b68ddf0ef54b50.png)](ff97743d27f67789441b4b1f1c7bb0ac.png)
198
+
199
+ 敵の子である二つ目は敵の探索範囲(大きいコライダ)
200
+
201
+ ![イメージ説明](048d1df102544e53dbe70fb42dccb4bc.png)