質問編集履歴

3

情報の追加

2020/05/18 09:33

投稿

unity_user_a
unity_user_a

スコア23

test CHANGED
File without changes
test CHANGED
@@ -308,16 +308,172 @@
308
308
 
309
309
 
310
310
 
311
- まだ理解が浅く、一言二言アドバイスを頂いただけでは、そこから自分で解決まで至ることが出来ない時もあります。
312
-
313
- 簡単なもので良いので、スクリプト(コード)の例を示していただけるとありがたいです。
314
-
315
-
316
-
317
- 私自身の成長・学習のためを考えれば、そこまでして頂かない方が良いかも知れませんが、今頂いているアドバイスだけでは解決に至れていません。
318
-
319
-
320
-
321
311
  追記(5/18)
322
312
 
323
313
  PlayerBulletとBulletのコードは、以前投稿した「プレイヤー弾がプレイヤーの後ろから出て、プレイヤーが押される」で、回答として頂いたコードをもとにしています。「isLeft は仮の変数です」といった所々の書き込みもそのまま残してあります。
314
+
315
+
316
+
317
+ 追記_2
318
+
319
+ 頂いたアドバイスをもとに下記まで進みました。
320
+
321
+ ```ここに言語を入力
322
+
323
+ private float GetXSpeed()
324
+
325
+ {
326
+
327
+ float horizontalKey = Input.GetAxis("Horizontal");
328
+
329
+ float xSpeed = 0.0f;
330
+
331
+ if (horizontalKey > 0)
332
+
333
+ {
334
+
335
+ transform.localScale = new Vector3(1, 1, 1);
336
+
337
+ isRun = true;
338
+
339
+ dashTime += Time.deltaTime;
340
+
341
+ xSpeed = speed;
342
+
343
+ isLeft = true; //New
344
+
345
+ }
346
+
347
+ else if (horizontalKey < 0)
348
+
349
+ {
350
+
351
+ transform.localScale = new Vector3(-1, 1, 1);
352
+
353
+ isRun = true;
354
+
355
+ dashTime += Time.deltaTime;
356
+
357
+ xSpeed = -speed;
358
+
359
+ isLeft = false; //New
360
+
361
+ }
362
+
363
+ else
364
+
365
+ {
366
+
367
+ isRun = false;
368
+
369
+ xSpeed = 0.0f;
370
+
371
+ dashTime = 0.0f;
372
+
373
+ }
374
+
375
+ ```
376
+
377
+ ※プライベート変数をまとめてある部分に「public bool isLeft = false;」も追加してあります。
378
+
379
+
380
+
381
+ ```ここに言語を入力
382
+
383
+ using System.Collections;
384
+
385
+ using System.Collections.Generic;
386
+
387
+ using UnityEngine;
388
+
389
+
390
+
391
+ public class PlayerBullet : MonoBehaviour
392
+
393
+ {
394
+
395
+ // InspectorでPrefab化したBulletを指定する
396
+
397
+ [SerializeField]
398
+
399
+ public GameObject bullet;
400
+
401
+ public GameObject player; //New
402
+
403
+
404
+
405
+ private bool isLeft;
406
+
407
+
408
+
409
+ // ユーザーがどちらを向いているか
410
+
411
+ void Start()
412
+
413
+ {
414
+
415
+ isLeft = player.GetComponent<Player>().isLeft;
416
+
417
+ }
418
+
419
+
420
+
421
+ void Update()
422
+
423
+ {
424
+
425
+ // 弾オブジェクトを生成して飛ばす関数を呼び出す
426
+
427
+ ShotAction();
428
+
429
+ }
430
+
431
+
432
+
433
+ void ShotAction()
434
+
435
+ {
436
+
437
+ Vector3 offset = new Vector3(1.0f, 0.0f, 0.0f);
438
+
439
+
440
+
441
+ //New
442
+
443
+ if(isLeft == true)
444
+
445
+ {
446
+
447
+
448
+
449
+ }
450
+
451
+ if(isLeft == false)
452
+
453
+ {
454
+
455
+
456
+
457
+ }
458
+
459
+
460
+
461
+ if (Input.GetButtonDown("Fire1"))
462
+
463
+ {
464
+
465
+ // Bulletコンポーネントがアタッチしている前提
466
+
467
+ var bulletObj = Instantiate(bullet, transform.position + offset, transform.rotation);
468
+
469
+ bulletObj.GetComponent<Bullet>().SetDirection(isLeft);
470
+
471
+ }
472
+
473
+ }
474
+
475
+ }
476
+
477
+ ```
478
+
479
+ あと少しだと思うのですが、PlayerBulletのコードで ==trueと==false の中身をどう書いたら良いのかで悩んでいます。

2

情報の追加

2020/05/18 09:33

投稿

unity_user_a
unity_user_a

スコア23

test CHANGED
File without changes
test CHANGED
@@ -315,3 +315,9 @@
315
315
 
316
316
 
317
317
  私自身の成長・学習のためを考えれば、そこまでして頂かない方が良いかも知れませんが、今頂いているアドバイスだけでは解決に至れていません。
318
+
319
+
320
+
321
+ 追記(5/18)
322
+
323
+ PlayerBulletとBulletのコードは、以前投稿した「プレイヤー弾がプレイヤーの後ろから出て、プレイヤーが押される」で、回答として頂いたコードをもとにしています。「isLeft は仮の変数です」といった所々の書き込みもそのまま残してあります。

1

情報の追加

2020/05/18 04:41

投稿

unity_user_a
unity_user_a

スコア23

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 「プレイヤーの弾が後ろに飛んで行く」、「プレイヤーの向きが変わっても、弾の向きが変わらない」のを修正したいです。
1
+ Unity初心者です。「プレイヤーの弾が後ろに飛んで行く」、「プレイヤーの向きが変わっても、弾の向きが変わらない」のを修正したいです。
2
2
 
3
3
 
4
4
 
@@ -299,3 +299,19 @@
299
299
  ```
300
300
 
301
301
  弾はプレイヤーの子オブジェクトにせず、Project上にあるPrefabをInspectorから指定しています。
302
+
303
+
304
+
305
+ 追記(5/17)
306
+
307
+ PlayerBulletのprivate bool isLeft の = true; を消したところ、弾が前方(左方向)に飛んで行く様になりました。当然かも知れませんが、プレイヤーの向きが変わっても左に飛んで行きます。
308
+
309
+
310
+
311
+ まだ理解が浅く、一言二言アドバイスを頂いただけでは、そこから自分で解決まで至ることが出来ない時もあります。
312
+
313
+ 簡単なもので良いので、スクリプト(コード)の例を示していただけるとありがたいです。
314
+
315
+
316
+
317
+ 私自身の成長・学習のためを考えれば、そこまでして頂かない方が良いかも知れませんが、今頂いているアドバイスだけでは解決に至れていません。