質問編集履歴
3
情報の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -140,5 +140,5 @@
|
|
140
140
|
PieceMoving();
|
141
141
|
}
|
142
142
|
```
|
143
|
+
これで一回オブジェクトに触った後、二回目触れてもPieceMoving()は呼ばれなくなりました。
|
143
|
-
|
144
|
+
しかし、一回触ったときに、PieceMoving()が二回呼ばれている感じになってしまいます。
|
144
|
-
if移動の部分で、条件にmove==falseを加えたところ、オブジェクトは移動しなかったので、フラグ自体は正常に作用していると思われるのですが…。
|
2
情報の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -86,4 +86,59 @@
|
|
86
86
|
|
87
87
|
### ※追記
|
88
88
|
頂いたコメントから検証したところ、PieceMoving()自体が二回呼ばれていることがわかりました。
|
89
|
+
|
90
|
+
そこで、本来はタッチするたびに移動させたいのですが、試しにPieceMoving()を一回だけ呼ぶ風にしてみました。
|
91
|
+
```
|
92
|
+
bool move=true;
|
93
|
+
|
94
|
+
private void PieceMoving()
|
95
|
+
{
|
96
|
+
if(move==true)
|
97
|
+
{
|
98
|
+
//上にRayを飛ばす
|
99
|
+
RaycastHit2D hitUp = Physics2D.Raycast(transform.position + Vector3.up, Vector2.up, 0.1f);
|
100
|
+
//下にRayを飛ばす
|
101
|
+
RaycastHit2D hitDown = Physics2D.Raycast(transform.position + Vector3.down, Vector2.down, 0.1f);
|
102
|
+
//右にRayを飛ばす
|
103
|
+
RaycastHit2D hitRight = Physics2D.Raycast(transform.position + Vector3.right, Vector2.right, 0.1f);
|
104
|
+
//左にRayを飛ばす
|
105
|
+
RaycastHit2D hitLeft = Physics2D.Raycast(transform.position + Vector3.left, Vector2.left, 0.1f);
|
106
|
+
|
107
|
+
//上に何もなければ上に移動する
|
108
|
+
if (!hitUp)
|
109
|
+
{
|
89
|
-
|
110
|
+
transform.position += new Vector3(0, 1.5f, 0);
|
111
|
+
Debug.Log("上に移動した");
|
112
|
+
}
|
113
|
+
|
114
|
+
//下に何もなければ下に移動する
|
115
|
+
else if (!hitDown)
|
116
|
+
{
|
117
|
+
transform.position -= new Vector3(0, 1.5f, 0);
|
118
|
+
Debug.Log("下に移動した");
|
119
|
+
}
|
120
|
+
|
121
|
+
//右に何もなければ右に移動する
|
122
|
+
else if (!hitRight)
|
123
|
+
{
|
124
|
+
transform.position += new Vector3(1.5f, 0, 0);
|
125
|
+
Debug.Log("右に移動した");
|
126
|
+
}
|
127
|
+
|
128
|
+
//左に何もなければ左に移動する
|
129
|
+
else if (!hitLeft)
|
130
|
+
{
|
131
|
+
transform.position -= new Vector3(1.5f, 0, 0);
|
132
|
+
Debug.Log("左に移動した");
|
133
|
+
}
|
134
|
+
}
|
135
|
+
move=false;
|
136
|
+
}
|
137
|
+
|
138
|
+
private void OnMouseDown()
|
139
|
+
{
|
140
|
+
PieceMoving();
|
141
|
+
}
|
142
|
+
```
|
143
|
+
以上のようにコードを変更したのですが、やはりPieceMoving()が二回呼ばれてしまいます。
|
144
|
+
if移動の部分で、条件にmove==falseを加えたところ、オブジェクトは移動しなかったので、フラグ自体は正常に作用していると思われるのですが…。
|
1
情報の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -84,4 +84,6 @@
|
|
84
84
|
ソースコードをどうすればよいのか、ご教授いただければ幸いです。
|
85
85
|
また、もしよろしければ、自分の解釈に関しても、誤っている点等ありましたら、そちらもご教授いただきたいです。よろしくお願いします!
|
86
86
|
|
87
|
-
|
87
|
+
### ※追記
|
88
|
+
頂いたコメントから検証したところ、PieceMoving()自体が二回呼ばれていることがわかりました。
|
89
|
+
PieceMoving()の呼び出しを一回のみにすることは出来ますでしょうか?
|