表題の通りです。
下記コードで、101行目で
this.destroyedBlocks += 1;
と加算しているのですが、関数が呼び出されるたびに、1とデバッグログに表示されます。
デバッグログは102行目です。
そのため、次の処理であるif文に到達せずに困っております。
なぜ1と表示され続け、加算をされないのか教えてください。
宜しくお願い致します。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5/// <summary> 6/// ブロックの制御。 7/// </summary> 8[RequireComponent(typeof(Rigidbody2D))] 9[RequireComponent(typeof(BoxCollider2D))] 10public class Block : MonoBehaviour { 11 12 /// <summary> 13 /// ボールがぶつかったときの効果音です。 14 /// 壊れるときは別の効果音です。 15 /// </summary> 16 public AudioClip seHit; 17 18 /// <summary> 19 /// ボールがぶつかって壊れるときの効果音です。 20 /// </summary> 21 public AudioClip seDestroy; 22 23 /// <summary> 24 /// ブロックの耐久力の初期値です。 25 /// </summary> 26 public int hpMax = 1; 27 /// <summary> 28 /// ブロックの耐久力です。最初に this.hpMax が代入されます。 29 /// 0 以下になるとブロックは壊れます。 30 /// </summary> 31 public int hp = 0; 32 33 public int destroyedBlocks = 0; 34 35 // Use this for initialization 36 void Start () { 37 // ブロックの耐久力を初期化します。 38 this.hp = hpMax; 39 40 this.destroyedBlocks = 0; 41 42 //CreateBlockObject(); 43 44 } 45 46 // Update is called once per frame 47 void Update () { 48 49 } 50 51 /// <Summary> 52 /// Prefabからブロックとして使うオブジェクトを生成します。 53 /// </Summary> 54 void CreateBlockObject() 55 { 56 GameObject obj = (GameObject)Resources.Load("Prefab/BlockLv1"); 57 for (float i = -2.5f; i <= 2.5f; i = i + 0.625f) 58 { 59 Instantiate((GameObject)Resources.Load("Prefab/BlockLv1"), new Vector3(i, 2.5f, 0.0f), Quaternion.identity); 60 } 61 62 //GameObject obj = (GameObject)Resources.Load("Prefab/BlockLv1"); 63 //Instantiate(obj, new Vector3(-2.5f, 2.5f, 0.0f), Quaternion.identity); 64 //Instantiate(obj, new Vector3(-1.875f, 2.5f, 0.0f), Quaternion.identity); 65 //Instantiate(obj, new Vector3(-1.25f, 2.5f, 0.0f), Quaternion.identity); 66 //Instantiate(obj, new Vector3(-0.625f, 2.5f, 0.0f), Quaternion.identity); 67 //Instantiate(obj, new Vector3(0.0f, 2.5f, 0.0f), Quaternion.identity); 68 //Instantiate(obj, new Vector3(0.625f, 2.5f, 0.0f), Quaternion.identity); 69 //Instantiate(obj, new Vector3(1.25f, 2.5f, 0.0f), Quaternion.identity); 70 //Instantiate(obj, new Vector3(1.875f, 2.5f, 0.0f), Quaternion.identity); 71 //Instantiate(obj, new Vector3(2.5f, 2.5f, 0.0f), Quaternion.identity); 72 73 74 } 75 76 /// <summary> 77 /// ボールがぶつかったときのイベント処理です。 78 /// </summary> 79 /// <param name="collision"></param> 80 private void OnCollisionEnter2D(Collision2D collision) 81 { 82 // 衝突したオブジェクトがボールの場合 83 if (collision.gameObject.layer == LayerMask.NameToLayer("Ball")) 84 { 85 // 耐久力を減らします。 86 this.hp -= 1; 87 88 Debug.Log(this.hp); 89 90 // 壊れる場合 91 if (this.hp <= 0) 92 { 93 // 壊されたときの効果音を再生 94 Util.PlayAudioClip(this.seDestroy, Camera.main.transform.position, 1.0f); 95 // スコア処理を追加 96 FindObjectOfType<Score>().AddPoint(10); 97 // このオブジェクトを破棄します。 98 GameObject.Destroy(this.gameObject); 99 100 // 破棄したオブジェクトを加算します。 101 this.destroyedBlocks += 1; 102 103 Debug.Log(this.destroyedBlocks); 104 105 // 破棄したオブジェクトが9の倍数の時 106 if (this.destroyedBlocks % 9 == 0) 107 { 108 // ブロックをサイズ分下にずらす そして ブロックを一列出現させる 109 //if (LayerMask.NameToLayer("Block")) 110 //{ 111 Debug.Log("test1"); 112 113 GameObject[] blocksTransform = GameObject.FindGameObjectsWithTag("Block"); 114 //GameObject[] blocksTransform = FindGameObjectsWithLayerMask(LayerMask.NameToLayer("Block")); 115 foreach (GameObject blockTransform in blocksTransform) 116 { 117 //全てのオブジェクトの座標を(0,-0.3125f,0)に移動する 118 blockTransform.transform.Translate(0, -0.3125f, 0); 119 120 } 121 //} 122 123 GameObject obj = (GameObject)Resources.Load("Prefab/BlockLv1"); 124 125 for (float i = -2.5f; i <= 2.5f; i = i + 0.625f) 126 { 127 Instantiate(obj, new Vector3(i, 2.5f, 0.0f), Quaternion.identity); 128 } 129 //0.625 130 //Instantiate(obj, new Vector3(0.625f, 2.5f, 0.0f), Quaternion.identity); 131 //Instantiate(obj, new Vector3(-0.625f, 2.5f, 0.0f), Quaternion.identity); 132 133 } 134 } 135 // まだ壊れない場合 136 else 137 { 138 // 跳ね返す効果音を再生 139 Util.PlayAudioClip(this.seHit, Camera.main.transform.position, 1.0f); 140 } 141 } 142 } 143} 144
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/20 11:52