質問編集履歴

2

説明追加

2020/08/20 14:30

投稿

yonsan
yonsan

スコア2

test CHANGED
File without changes
test CHANGED
@@ -15,6 +15,10 @@
15
15
  また、足りない情報等ありましたら、お知らせ願います。
16
16
 
17
17
 
18
+
19
+ ※容量を小さくしたGif画像を、何故か本投稿へ貼り付けできなかったため、横スワイプの実行結果確認いただく際は、以下URLよりご確認願います。
20
+
21
+ https://d.kuku.lu/823499bbf5
18
22
 
19
23
 
20
24
 

1

誤字修正

2020/08/20 14:30

投稿

yonsan
yonsan

スコア2

test CHANGED
File without changes
test CHANGED
@@ -160,162 +160,4 @@
160
160
 
161
161
 
162
162
 
163
- ここにより詳細な情報を記載してください。
164
-
165
- ### 前提・実現したいこと
166
-
167
-
168
-
169
- unityで、縦にスワイプできるパネルを作成です。
170
-
171
- 下記にあります、該当のソースコードでは、パネルを横にスワイプできるようになっております。
172
-
173
- あらかじめページ数をpublicで宣言し、そのページ数をオーバーしたスワイプはできないようにしております。
174
-
175
-
176
-
177
-
178
-
179
- ### 該当のソースコード
180
-
181
-
182
-
183
- ```C#
184
-
185
- using System.Collections;
186
-
187
- using System.Collections.Generic;
188
-
189
- using UnityEngine;
190
-
191
- using UnityEngine.EventSystems;
192
-
193
-
194
-
195
- public class PageSwiper : MonoBehaviour, IDragHandler, IEndDragHandler
196
-
197
- {
198
-
199
- private Vector3 panelLocation;
200
-
201
- public float percentThreshold = 0.2f;
202
-
203
- public float easing = 0.5f;
204
-
205
- public float totalPages = 1;
206
-
207
- private int currentPage = 1;
208
-
209
-
210
-
211
- // Start is called before the first frame update
212
-
213
- void Start()
214
-
215
- {
216
-
217
- panelLocation = transform.position;
218
-
219
- }
220
-
221
- public void OnDrag(PointerEventData data)
222
-
223
- {
224
-
225
- float difference = data.pressPosition.x - data.position.x;
226
-
227
- transform.position = panelLocation - new Vector3(difference, 0, 0);
228
-
229
- }
230
-
231
- public void OnEndDrag(PointerEventData data)
232
-
233
- {
234
-
235
- float percentage = (data.pressPosition.x - data.position.x) / Screen.width;
236
-
237
- if (Mathf.Abs(percentage) >= percentThreshold)
238
-
239
- {
240
-
241
- Vector3 newLocation = panelLocation;
242
-
243
- if (percentage > 0 && currentPage < totalPages)
244
-
245
- {
246
-
247
- currentPage++;
248
-
249
- newLocation += new Vector3(-Screen.width, 0, 0);
250
-
251
- }
252
-
253
- else if (percentage < 0 && currentPage > 1)
254
-
255
- {
256
-
257
- currentPage--;
258
-
259
- newLocation += new Vector3(Screen.width, 0, 0);
260
-
261
- }
262
-
263
- StartCoroutine(SmoothMove(transform.position, newLocation, easing));
264
-
265
- panelLocation = newLocation;
266
-
267
- }
268
-
269
- else
270
-
271
- {
272
-
273
- StartCoroutine(SmoothMove(transform.position, panelLocation, easing));
274
-
275
- }
276
-
277
- }
278
-
279
-
280
-
281
- IEnumerator SmoothMove(Vector3 startpos, Vector3 endpos, float seconds)
282
-
283
- {
284
-
285
- float t = 0f;
286
-
287
- while (t <= 1.0)
163
+ 環境:Unity 2020.1.2f1
288
-
289
- {
290
-
291
- t += Time.deltaTime / seconds;
292
-
293
- transform.position = Vector3.Lerp(startpos, endpos, Mathf.SmoothStep(0f, 1f, t));
294
-
295
- yield return null;
296
-
297
- }
298
-
299
- }
300
-
301
- }
302
-
303
-
304
-
305
- ```
306
-
307
-
308
-
309
- ### 試したこと
310
-
311
-
312
-
313
- コード内のposition.xをyにしたり、Vector3()内の値をxとyで入れ替えたりと、色々試しましたが実現できませんでした。
314
-
315
-
316
-
317
- ### 補足情報(FW/ツールのバージョンなど)
318
-
319
-
320
-
321
- ここにより詳細な情報を記載してください。