前提・実現したいこと
Unityで戦闘ゲーム的なものを作っています。
タップした場所を取得しその位置に応じてheartが増えたり増えなかったりする機構を作っています。
ですが、その機構を作っている途中に、あるバグ?で困っています。
発生している問題・エラーメッセージ
エラーメッセージはありません。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.SceneManagement; 6 7public class fightManagear : MonoBehaviour 8{ 9 bool mopen = true; 10 public Sprite sprite; 11 public Sprite sprite1; 12 public Sprite Item; 13 public Sprite Item1; 14 public Sprite Item2; 15 public Sprite Item3; 16 public Sprite Item4; 17 public Sprite Item5; 18 public Text Lifetext; 19 public int heart = 100; 20 public int heart2 = PlayerPrefs.GetInt("level")*100; 21 public AudioClip damageSE; 22 AudioSource aud; 23 float fo = 0; 24 int i; 25 bool tap = false; 26 int color; 27 int color2; 28 // Start is called before the first frame update 29 void Start() 30 { 31 aud = GetComponent<AudioSource>(); 32 i = Random.Range(1, 6); 33 if (i == 1) 34 { 35 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item; 36 } 37 else if (i == 2) 38 { 39 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item1; 40 } 41 else if (i == 3) 42 { 43 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item2; 44 } 45 else if (i == 4) 46 { 47 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item3; 48 } 49 else if (i == 5) 50 { 51 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item4; 52 } 53 else if (i == 6) 54 { 55 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item5; 56 } 57 58 } 59 60 // Update is called once per frame 61 void Update() 62 { 63 fo += Time.deltaTime; 64 if (fo >= 1) 65 { 66 Attack(); 67 fo = 0; 68 if (mopen) 69 { 70 GameObject.Find("monster07").GetComponent<SpriteRenderer>().sprite = sprite1; 71 mopen = false; 72 } 73 else 74 { 75 GameObject.Find("monster07").GetComponent<SpriteRenderer>().sprite = sprite; 76 mopen = true; 77 } 78 79 } 80 if (heart <= 0) 81 { 82 SceneManager.LoadScene("GameOverScene"); 83 } 84 if (Input.GetMouseButtonDown(0)) 85 { 86 // クリック・タップした瞬間の座標 87 var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition + Camera.main.transform.forward); 88 if (pos.x <= -1.2) 89 { 90 //Debug.Log("R"); 91 tap = true; 92 color = 1; 93 } 94 else if (pos.x > 1.0) 95 { 96 //Debug.Log("B"); 97 tap = true; 98 color = 2; 99 } 100 else if (pos.y > 0.5) 101 { 102 //Debug.Log("G"); 103 tap = true; 104 color = 3; 105 } 106 i = Random.Range(1, 6); 107 if (tap) 108 { 109 if (i == 1) 110 { 111 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item; 112 color2 = 1; 113 114 } 115 else if (i == 2) 116 { 117 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item1; 118 color2 = 2; 119 } 120 else if (i == 3) 121 { 122 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item2; 123 color2 = 1; 124 } 125 else if (i == 4) 126 { 127 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item3; 128 color2 = 3; 129 } 130 else if (i == 5) 131 { 132 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item4; 133 color = 2; 134 } 135 else if (i == 6) 136 { 137 GameObject.Find("Item").GetComponent<SpriteRenderer>().sprite = Item5; 138 color2 = 3; 139 } 140 clickd(); 141 } 142 143 } 144 } 145 public void Attack() 146 { 147 aud.PlayOneShot(damageSE); 148 heart -= PlayerPrefs.GetInt("level")*2; 149 Lifetext.text = "HP: " + heart; 150 } 151 public void clickd() 152 { 153 if(color==color2) 154 { 155 heart2 -= 1; 156 Debug.Log("Attack"); 157 } 158 } 159} 160
最後の方のDebug.Log("Attack"); が反応していないようで、最初の1回は出るのですがそれ以降出ません。
Unityに詳しい方、ご回答よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
バージョンは2018.4.12f1です。
Android版です。
回答1件
あなたの回答
tips
プレビュー