前提・実現したいこと
unityで、縦にスワイプできるパネルを作成中です。
下記にあります、該当のソースコードでは、パネルを横にスワイプできるようになっております。
あらかじめページ数をpublicで宣言し、そのページ数をオーバーしたスワイプはできないようにしております。
このソースコードを、横ではなく縦スワイプできるようにしたいのですが、実現できません。
ご教授の程、お願い致します。
また、足りない情報等ありましたら、お知らせ願います。
※容量を小さくしたGif画像を、何故か本投稿へ貼り付けできなかったため、横スワイプの実行結果確認いただく際は、以下URLよりご確認願います。
https://d.kuku.lu/823499bbf5
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.EventSystems; 5 6public class PageSwiper : MonoBehaviour, IDragHandler, IEndDragHandler 7{ 8 private Vector3 panelLocation; 9 public float percentThreshold = 0.2f; 10 public float easing = 0.5f; 11 public float totalPages = 1; 12 private int currentPage = 1; 13 14 // Start is called before the first frame update 15 void Start() 16 { 17 panelLocation = transform.position; 18 } 19 public void OnDrag(PointerEventData data) 20 { 21 float difference = data.pressPosition.x - data.position.x; 22 transform.position = panelLocation - new Vector3(difference, 0, 0); 23 } 24 public void OnEndDrag(PointerEventData data) 25 { 26 float percentage = (data.pressPosition.x - data.position.x) / Screen.width; 27 if (Mathf.Abs(percentage) >= percentThreshold) 28 { 29 Vector3 newLocation = panelLocation; 30 if (percentage > 0 && currentPage < totalPages) 31 { 32 currentPage++; 33 newLocation += new Vector3(-Screen.width, 0, 0); 34 } 35 else if (percentage < 0 && currentPage > 1) 36 { 37 currentPage--; 38 newLocation += new Vector3(Screen.width, 0, 0); 39 } 40 StartCoroutine(SmoothMove(transform.position, newLocation, easing)); 41 panelLocation = newLocation; 42 } 43 else 44 { 45 StartCoroutine(SmoothMove(transform.position, panelLocation, easing)); 46 } 47 } 48 49 IEnumerator SmoothMove(Vector3 startpos, Vector3 endpos, float seconds) 50 { 51 float t = 0f; 52 while (t <= 1.0) 53 { 54 t += Time.deltaTime / seconds; 55 transform.position = Vector3.Lerp(startpos, endpos, Mathf.SmoothStep(0f, 1f, t)); 56 yield return null; 57 } 58 } 59} 60
試したこと
コード内のposition.xをyにしたり、Vector3()内の値をxとyで入れ替えたりと、色々試しましたが実現できませんでした。
補足情報(FW/ツールのバージョンなど)
環境:Unity 2020.1.2f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/21 01:07