質問編集履歴
10
era-
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
unity2d 角度をランダムに決めランダムな移動
|
1
|
+
unity2d 角度をランダムに決めランダムな移動をする。
|
test
CHANGED
File without changes
|
9
えい
test
CHANGED
File without changes
|
test
CHANGED
@@ -198,6 +198,6 @@
|
|
198
198
|
|
199
199
|
現在下手ながらもコードを書いたのですが、挙動を直したいです。
|
200
200
|
|
201
|
-
・回転の角度変更をゆっくりにする。
|
201
|
+
**・回転の角度変更をゆっくりにする(今の状態だとかくかくしている)。**
|
202
202
|
|
203
203
|
やり方のヒントでも良いので教えてもらえないでしょうか?こんな感じみたいなコードを貰えると嬉しいです。
|
8
おういえす
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
えい
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 (
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
おういえす
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 : Mo
|
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
|
-
tr
|
73
|
+
StartCoroutine(base.RandomRot());
|
70
74
|
|
71
75
|
timeCount = 0;
|
72
76
|
|
73
77
|
}
|
74
78
|
|
75
|
-
|
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
|
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
|
-
|
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
|
-
|
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 (
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 (
test
CHANGED
File without changes
|
test
CHANGED
@@ -194,11 +194,15 @@
|
|
194
194
|
|
195
195
|
敵のAIには二つコライダがついていて、一つはプレイヤーの弾を受け止める方(小さいコライダ)
|
196
196
|
|
197
|
-
|
197
|
+
|
198
198
|
|
199
199
|
敵の子である二つ目は敵の探索範囲(大きいコライダ)
|
200
200
|
|
201
|
+
|
202
|
+
|
201
|
-
|
203
|
+
この向きで追従をしたいが
|
204
|
+
|
205
|
+
|
202
206
|
|
203
207
|
現在下手ながらもコードを書いたのですが、挙動を直したいです。
|
204
208
|
|
2
era-
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-
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)
|