こんにちは、レースゲームを作っております。
コードです
アイテムフラグを上げるオブジェクト
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Questionblock : MonoBehaviour 6{ 7 private void OnTriggerEnter(Collider other) 8 { 9 if (other.gameObject.CompareTag("Cart")) 10 { 11 other.GetComponentInParent<ItemCatch>().getItem = true; 12 } 13 } 14}
カートについているコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class ItemCatch : MonoBehaviour 6{ 7 public bool getItem; // アイテムをゲットしたかのフラグ 8 private bool haveItem; // アイテムを持っているかのフラグ 9 private bool useItem; // アイテムを使ったかのフラグ 10 private int selectItem; // アイテムを選んだものを入れる 11 private GameObject item; 12 private new Rigidbody rigidbody; 13 14 [SerializeField] private int itemCount; // アイテム数 15 [SerializeField] private float power; // キノコパワー 16 17 void Start() 18 { 19 rigidbody = GetComponent<Rigidbody>(); 20 } 21 void Update() 22 { 23 ChooseItem(); 24 UseItems(); 25 } 26 /// <summary> 27 /// アイテムを選ぶ 28 /// </summary> 29 private void ChooseItem() 30 { 31 if (!getItem) return; 32 if (haveItem) return; 33 34 print(getItem); 35 print("アイテムセレクト"); 36 var itemNumber = (int)Random.Range(0, itemCount); 37 selectItem = itemNumber; 38 getItem = false; 39 useItem = false; 40 haveItem = true; 41 42 } 43 /// <summary> 44 /// アイテムを使う 45 /// </summary> 46 private void UseItems() 47 { 48 if (!haveItem) return; 49 print("アイテム持っている"); 50 switch (selectItem) 51 { 52 case 0: SuperMushroom(); break; 53 } 54 } 55 /// <summary> 56 /// スーパーキノコ 57 /// </summary> 58 private void SuperMushroom() 59 { 60 if (useItem) return; 61 if (Input.GetKeyDown(KeyCode.J) && haveItem){ 62 rigidbody.AddForce(transform.forward * power); 63 haveItem = false; 64 useItem = true; ; 65 print("使った"); 66 } 67 } 68} 69
やった事
上にも書いたのですが、アイテムを持っているときに アイテムをとると 二回使えてしまうというバグがあります。
getItem でアイテムを選び
haveItem でアイテムを持っているときにはreturn で入らないようにし
それでも足りなかったので 新しいbool を作って、useItem を入れて return で返すようにしているのですが、何故か二回アイテムを使えてしまいます。
アイテム数はもう少し増やす予定なのですが、こういう時は配列やListに入れたほうが楽なのでしょうか?
どうかよろしくお願いします。解説やコメントなどくださるとうれしいです。
フラグなどが苦手なのでの考え方などもご教示お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/24 05:58