質問編集履歴
3
情報の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -153,10 +153,88 @@
|
|
153
153
|
追記(5/17)
|
154
154
|
PlayerBulletのprivate bool isLeft の = true; を消したところ、弾が前方(左方向)に飛んで行く様になりました。当然かも知れませんが、プレイヤーの向きが変わっても左に飛んで行きます。
|
155
155
|
|
156
|
+
追記(5/18)
|
156
|
-
|
157
|
+
PlayerBulletとBulletのコードは、以前投稿した「プレイヤー弾がプレイヤーの後ろから出て、プレイヤーが押される」で、回答として頂いたコードをもとにしています。「isLeft は仮の変数です」といった所々の書き込みもそのまま残してあります。
|
157
|
-
簡単なもので良いので、スクリプト(コード)の例を示していただけるとありがたいです。
|
158
158
|
|
159
|
+
追記_2
|
160
|
+
頂いたアドバイスをもとに下記まで進みました。
|
161
|
+
```ここに言語を入力
|
162
|
+
private float GetXSpeed()
|
163
|
+
{
|
164
|
+
float horizontalKey = Input.GetAxis("Horizontal");
|
165
|
+
float xSpeed = 0.0f;
|
166
|
+
if (horizontalKey > 0)
|
167
|
+
{
|
168
|
+
transform.localScale = new Vector3(1, 1, 1);
|
169
|
+
isRun = true;
|
170
|
+
dashTime += Time.deltaTime;
|
171
|
+
xSpeed = speed;
|
172
|
+
isLeft = true; //New
|
173
|
+
}
|
174
|
+
else if (horizontalKey < 0)
|
175
|
+
{
|
176
|
+
transform.localScale = new Vector3(-1, 1, 1);
|
177
|
+
isRun = true;
|
178
|
+
dashTime += Time.deltaTime;
|
179
|
+
xSpeed = -speed;
|
180
|
+
isLeft = false; //New
|
181
|
+
}
|
182
|
+
else
|
183
|
+
{
|
184
|
+
isRun = false;
|
185
|
+
xSpeed = 0.0f;
|
186
|
+
dashTime = 0.0f;
|
187
|
+
}
|
188
|
+
```
|
159
|
-
|
189
|
+
※プライベート変数をまとめてある部分に「public bool isLeft = false;」も追加してあります。
|
160
190
|
|
191
|
+
```ここに言語を入力
|
192
|
+
using System.Collections;
|
193
|
+
using System.Collections.Generic;
|
194
|
+
using UnityEngine;
|
195
|
+
|
196
|
+
public class PlayerBullet : MonoBehaviour
|
197
|
+
{
|
198
|
+
// InspectorでPrefab化したBulletを指定する
|
199
|
+
[SerializeField]
|
200
|
+
public GameObject bullet;
|
201
|
+
public GameObject player; //New
|
202
|
+
|
203
|
+
private bool isLeft;
|
204
|
+
|
205
|
+
// ユーザーがどちらを向いているか
|
206
|
+
void Start()
|
207
|
+
{
|
208
|
+
isLeft = player.GetComponent<Player>().isLeft;
|
209
|
+
}
|
210
|
+
|
211
|
+
void Update()
|
212
|
+
{
|
213
|
+
// 弾オブジェクトを生成して飛ばす関数を呼び出す
|
214
|
+
ShotAction();
|
215
|
+
}
|
216
|
+
|
217
|
+
void ShotAction()
|
218
|
+
{
|
219
|
+
Vector3 offset = new Vector3(1.0f, 0.0f, 0.0f);
|
220
|
+
|
161
|
-
|
221
|
+
//New
|
222
|
+
if(isLeft == true)
|
223
|
+
{
|
224
|
+
|
225
|
+
}
|
226
|
+
if(isLeft == false)
|
227
|
+
{
|
228
|
+
|
229
|
+
}
|
230
|
+
|
231
|
+
if (Input.GetButtonDown("Fire1"))
|
232
|
+
{
|
233
|
+
// Bulletコンポーネントがアタッチしている前提
|
162
|
-
|
234
|
+
var bulletObj = Instantiate(bullet, transform.position + offset, transform.rotation);
|
235
|
+
bulletObj.GetComponent<Bullet>().SetDirection(isLeft);
|
236
|
+
}
|
237
|
+
}
|
238
|
+
}
|
239
|
+
```
|
240
|
+
あと少しだと思うのですが、PlayerBulletのコードで ==trueと==false の中身をどう書いたら良いのかで悩んでいます。
|
2
情報の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -156,4 +156,7 @@
|
|
156
156
|
まだ理解が浅く、一言二言アドバイスを頂いただけでは、そこから自分で解決まで至ることが出来ない時もあります。
|
157
157
|
簡単なもので良いので、スクリプト(コード)の例を示していただけるとありがたいです。
|
158
158
|
|
159
|
-
私自身の成長・学習のためを考えれば、そこまでして頂かない方が良いかも知れませんが、今頂いているアドバイスだけでは解決に至れていません。
|
159
|
+
私自身の成長・学習のためを考えれば、そこまでして頂かない方が良いかも知れませんが、今頂いているアドバイスだけでは解決に至れていません。
|
160
|
+
|
161
|
+
追記(5/18)
|
162
|
+
PlayerBulletとBulletのコードは、以前投稿した「プレイヤー弾がプレイヤーの後ろから出て、プレイヤーが押される」で、回答として頂いたコードをもとにしています。「isLeft は仮の変数です」といった所々の書き込みもそのまま残してあります。
|
1
情報の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
「プレイヤーの弾が後ろに飛んで行く」、「プレイヤーの向きが変わっても、弾の向きが変わらない」のを修正したいです。
|
1
|
+
Unity初心者です。「プレイヤーの弾が後ろに飛んで行く」、「プレイヤーの向きが変わっても、弾の向きが変わらない」のを修正したいです。
|
2
2
|
|
3
3
|

|
4
4
|

|
@@ -148,4 +148,12 @@
|
|
148
148
|
}
|
149
149
|
}
|
150
150
|
```
|
151
|
-
弾はプレイヤーの子オブジェクトにせず、Project上にあるPrefabをInspectorから指定しています。
|
151
|
+
弾はプレイヤーの子オブジェクトにせず、Project上にあるPrefabをInspectorから指定しています。
|
152
|
+
|
153
|
+
追記(5/17)
|
154
|
+
PlayerBulletのprivate bool isLeft の = true; を消したところ、弾が前方(左方向)に飛んで行く様になりました。当然かも知れませんが、プレイヤーの向きが変わっても左に飛んで行きます。
|
155
|
+
|
156
|
+
まだ理解が浅く、一言二言アドバイスを頂いただけでは、そこから自分で解決まで至ることが出来ない時もあります。
|
157
|
+
簡単なもので良いので、スクリプト(コード)の例を示していただけるとありがたいです。
|
158
|
+
|
159
|
+
私自身の成長・学習のためを考えれば、そこまでして頂かない方が良いかも知れませんが、今頂いているアドバイスだけでは解決に至れていません。
|