質問編集履歴

3

情報の修正

2023/08/22 05:58

投稿

Beggi
Beggi

スコア7

test CHANGED
File without changes
test CHANGED
@@ -140,5 +140,5 @@
140
140
  PieceMoving();
141
141
  }
142
142
  ```
143
+ これで一回オブジェクトに触った後、二回目触れてもPieceMoving()は呼ばれなくなりました。
143
- 以上のようにコードを変更したのですがやはりPieceMoving()が二回呼ばれてしまいます。
144
+ かし、一回触っときに、PieceMoving()が二回呼ばれている感じになってしまいます。
144
- if移動の部分で、条件にmove==falseを加えたところ、オブジェクトは移動しなかったので、フラグ自体は正常に作用していると思われるのですが…。

2

情報の追記

2023/08/22 05:31

投稿

Beggi
Beggi

スコア7

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
- PieceMoving()の呼び出しを一回のみにすることは出来ますでしょうか?
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

情報の追記

2023/08/22 04:54

投稿

Beggi
Beggi

スコア7

test CHANGED
File without changes
test CHANGED
@@ -84,4 +84,6 @@
84
84
  ソースコードをどうすればよいのか、ご教授いただければ幸いです。
85
85
  また、もしよろしければ、自分の解釈に関しても、誤っている点等ありましたら、そちらもご教授いただきたいです。よろしくお願いします!
86
86
 
87
-
87
+ ### ※追記
88
+ 頂いたコメントから検証したところ、PieceMoving()自体が二回呼ばれていることがわかりました。
89
+ PieceMoving()の呼び出しを一回のみにすることは出来ますでしょうか?