質問編集履歴

3

画像の削除

2019/02/23 11:53

投稿

ITATI
ITATI

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,4 @@
1
1
  ### 前提・実現したいこと
2
-
3
- ![イメージ説明](fcb743164125a7dc9527990511243476.png)
4
2
 
5
3
  上記画像の2点の空のオブジェクト"groundCheck_C"、“HeadCheck_C”の座標に接触したオブジェクトのタグを
6
4
 

2

タグの修正、タイトル修正

2019/02/23 11:52

投稿

ITATI
ITATI

スコア14

test CHANGED
@@ -1 +1 @@
1
- 2点のオブジェクト接触による判定を行いたい
1
+ 2点のオブジェクト接触について細かい条件指定を行いたい
test CHANGED
@@ -106,9 +106,7 @@
106
106
 
107
107
  foreach (Collider2D[] ladderCheckList in ladderCheckCollider) {
108
108
 
109
- foreach (Collider2D ladderCheck in ladderCheckList) {
109
+ foreach (Collider2D ladderCheck in ladderCheckList) {
110
-
111
-
112
110
 
113
111
  if (ladderCheck != null)
114
112
 
@@ -118,7 +116,7 @@
118
116
 
119
117
  {
120
118
 
121
- if (ladderCheck.tag == "Ladder") {Check_OnLadderObject = ladderCheck.gameObject; }
119
+ if (ladderCheck.tag == "Ladder") {Check_OnLadderObject = ladderCheck.gameObject; }
122
120
 
123
121
  }
124
122
 
@@ -142,7 +140,41 @@
142
140
 
143
141
  ```
144
142
 
143
+ Collider2D[][] ladderCheckCollider = new Collider2D[2][];
144
+
145
+ ladderCheckCollider[0] = Physics2D.OverlapPointAll(HeadCheck_C.position);
146
+
147
+ ladderCheckCollider[1] = Physics2D.OverlapPointAll(groundCheck_C.position);
148
+
149
+ foreach (Collider2D[] ladderCheckList in ladderCheckCollider) {
150
+
151
+ foreach (Collider2D ladderCheck in ladderCheckList) {
152
+
153
+ if (ladderCheck != null)
154
+
155
+ {
156
+
157
+ if (!ladderCheck.isTrigger)
158
+
159
+ {
160
+
145
161
  if (ladderCheck.tag == "Ladder") {Check_OnLadderObject = ladderCheck.gameObject; }
162
+
163
+ }
164
+
165
+ }
166
+
167
+ }
168
+
169
+ }
170
+
171
+ if (Check_OnLadderObject != null)
172
+
173
+ {
174
+
175
+ ladder = true;
176
+
177
+ }
146
178
 
147
179
  ```
148
180
 

1

質問内容を簡略化

2019/02/22 11:01

投稿

ITATI
ITATI

スコア14

test CHANGED
File without changes
test CHANGED
@@ -52,19 +52,23 @@
52
52
 
53
53
  protected virtual void FixedUpdate() {
54
54
 
55
- ```
55
+ groundCheck_OnRoadObject = null;
56
56
 
57
- 参考にした元のコード
57
+ groundCheck_OnMoveObject = null;
58
58
 
59
- ```c#
59
+ groundCheck_OnEnemyObject = null;
60
60
 
61
+ Check_OnLadderObject = null;
62
+
63
+
64
+
61
- Collider2D[][] groundCheckCollider = new Collider2D[3][];
65
+ Collider2D[][] groundCheckCollider = new Collider2D[3][];
62
66
 
63
67
  groundCheckCollider[0] = Physics2D.OverlapPointAll(groundCheck_L.position);
64
68
 
65
69
  groundCheckCollider[1] = Physics2D.OverlapPointAll(groundCheck_C.position);
66
70
 
67
- groundCheckCollider[2] = Physics2D.OverlapPointAll(groundCheck_R.position);
71
+ groundCheckCollider[2] = Physics2D.OverlapPointAll(groundCheck_R.position);
68
72
 
69
73
  foreach (Collider2D[] groundCheckList in groundCheckCollider) {
70
74
 
@@ -78,15 +82,21 @@
78
82
 
79
83
  grounded = true;//grounded = 地面に立った状態にここで設定
80
84
 
81
- }}}
85
+ air = false;
82
86
 
83
- ```
87
+ if (groundCheck.tag == "Road") {groundCheck_OnRoadObject = groundCheck.gameObject;}
84
88
 
85
- 今回追加したコード
89
+ else if (groundCheck.tag == "MoveObject") {groundCheck_OnMoveObject = groundCheck.gameObject;}
86
90
 
87
- ```c#
91
+ else if (groundCheck.tag == "Enemy") {groundCheck_OnEnemyObject = groundCheck.gameObject;}
88
92
 
93
+ }
89
94
 
95
+ } //if (groundCheckCollider[1] != null){ }
96
+
97
+ }
98
+
99
+ }
90
100
 
91
101
  Collider2D[][] ladderCheckCollider = new Collider2D[2][];
92
102
 
@@ -94,32 +104,58 @@
94
104
 
95
105
  ladderCheckCollider[1] = Physics2D.OverlapPointAll(groundCheck_C.position);
96
106
 
97
- foreach (Collider2D[] ladderCheckList in ladderCheckCollider)
107
+ foreach (Collider2D[] ladderCheckList in ladderCheckCollider) {
108
+
109
+ foreach (Collider2D ladderCheck in ladderCheckList) {
110
+
111
+
112
+
113
+ if (ladderCheck != null)
114
+
115
+ {
116
+
117
+ if (!ladderCheck.isTrigger)
118
+
119
+ {
120
+
121
+ if (ladderCheck.tag == "Ladder") {Check_OnLadderObject = ladderCheck.gameObject; }
122
+
123
+ }
124
+
125
+ }
126
+
127
+ }
128
+
129
+ }
130
+
131
+ if (Check_OnLadderObject != null)
98
132
 
99
133
  {
100
134
 
101
- foreach (Collider2D ladderCheck in ladderCheckList)
135
+ ladder = true;
102
136
 
103
- {
104
-
105
-          if (ladderCheck != null) {
106
-
107
-   if (!ladderCheck.isTrigger) {
108
-
109
- ladder = true;//ladder = はしごに接触した状態にここで設定
110
-
111
- }
137
+ }
112
-
113
- }}}}}
114
138
 
115
139
  ```
116
140
 
117
141
  ### 発生している問題
118
142
 
119
- 配列が使われていることもあり、条件の適切な指定方法が分かりませんでした。
143
+ ```
120
144
 
121
- 今回追加したコードの内容は"groundCheck_C"、“HeadCheck_C”の座標に何らかのオブジェクトが
145
+ if (ladderCheck.tag == "Ladder") {Check_OnLadderObject = ladderCheck.gameObject; }
122
146
 
123
- 接触すればladder = true;にするというもので、大雑把なものです。
147
+ ```
124
148
 
125
- 例えばれを"groundCheck_C"=groundタグ、“HeadCheck_C”=Ladderタグ のオブジェクト接触してる場合にladder = true;にする場合、条件式はどように記述ればよいのでしょうか?
149
+ の部分のコードの内容は"groundCheck_C"、“HeadCheck_C”の座標に何らかのオブジェクト接触すればladder = true;にするという大雑把な条件式の様で
150
+
151
+ 細かい条件の指定方法が分かりませんでした。
152
+
153
+
154
+
155
+ 例えばこれを
156
+
157
+ ・"groundCheck_C"のみオブジェクトに接触
158
+
159
+ ・“HeadCheck_C”のみオブジェクトに接触
160
+
161
+ で指定する場合、条件式をどのように記述すればよいのでしょうか?