teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

7/15 09:41のコメントを受けて追記

2016/07/15 01:43

投稿

sakura_hana
sakura_hana

スコア11429

answer CHANGED
@@ -1,3 +1,68 @@
1
+ (7/15 09:41のコメントを受けて追記)
2
+ なるほど、消すのはオレンジ色のブロックだったんですね。
3
+ それであれば、下記のように変更すればよいかと思います。
4
+
5
+ Destroyクラス(02〜06も同様)
6
+ ```C#
7
+ using UnityEngine;
8
+ using System.Collections;
9
+
10
+ public class Destroy01 : MonoBehaviour
11
+ {
12
+ //public static bool Hit01; //ヒットフラグ
13
+ public bool Hit01;
14
+
15
+ //当たった相手オブジェクト
16
+ public GameObject hitObj;
17
+
18
+ // Use this for initialization
19
+ void Start()
20
+ {
21
+ Hit01 = false;
22
+ }
23
+
24
+ // Update is called once per frame
25
+ void Update()
26
+ {
27
+ }
28
+ //ブロックと接触時に呼ばれる
29
+ void OnTriggerEnter2D(Collider2D other)
30
+ {
31
+ Hit01 = true;
32
+ hitObj = other.gameObject;
33
+ }
34
+ //ブロックが離れる際に呼ばれる
35
+ void OnTriggerExit2D(Collider2D other)
36
+ {
37
+ Hit01 = false;
38
+ hitObj = null;
39
+ }
40
+ }
41
+ ```
42
+
43
+ Deleteクラス(if(ALL_OK == true && Count>0)の部分を差し替え)
44
+ ```C#
45
+ if(ALL_OK == true) {
46
+ //ここで一番下に作った当たり判定に接触している
47
+ //ブロックをすべて消す
48
+
49
+ if (d1.hitObj != null) { Destroy(d1.hitObj); }
50
+ if (d2.hitObj != null) { Destroy(d2.hitObj); }
51
+ if (d3.hitObj != null) { Destroy(d3.hitObj); }
52
+ if (d4.hitObj != null) { Destroy(d4.hitObj); }
53
+ if (d5.hitObj != null) { Destroy(d5.hitObj); }
54
+ if (d6.hitObj != null) { Destroy(d6.hitObj); }
55
+
56
+ d1.Hit01 = false;
57
+ d2.Hit01 = false;
58
+ d3.Hit01 = false;
59
+ d4.Hit01 = false;
60
+ d5.Hit01 = false;
61
+ d6.Hit01 = false;
62
+ }
63
+ ```
64
+ ---
65
+ (初期投稿分)
1
66
  まず、UpdateではなくFixedUpdateを使いましょう。
2
67
  Updateが「1フレームに1回(フレームレートによって逐次変動)」呼ばれるのに対し、FixedUpdateは「一定周期(物理演算と同周期)」で呼ばれます。
3
68