プログラミングで世界を変える

ゲームプログラミングと技術のこと

uGUIで無限スクロールビューを一定間隔で止まるように拡張するスクリプト

スマホのホーム画面のように一定間隔で止まるようなスクロールビューを実現しました。

f:id:splas_boomerang:20150727030816g:plain:w300

uGUIで無限スクロールビューを一定間隔で止まるように拡張するスクリプト · GitHub

スクリプトはこちらの記事で紹介されている「無限スクロールビュー」の拡張となっています。

tsubakit1.hateblo.jp

使い方

上記記事のScrollRectの部分をFixedScrollRectに置き換えてください。
ScrollRectのMovementTypeは同じように「Unrestricted」に変更しておいてください。

f:id:splas_boomerang:20150727032006p:plain

元に戻るスピードを調整したい場合は、const float POWERの値を書き換えてください。

実装

gist.github.com

InfinityScrollを参照し、必要な値を取得しています。

ドラッグ(スクロール)は開始時と終了時の判定が取れるため、操作中は元に戻らないように状態管理をしています。

あとはUpdate()でどちら方向が近いかを判断し、元に戻る処理をしています。

課題

アニメーションはもう少し綺麗にしたいなって思いました。

また、スクロールしたあとに慣性みたいなのが働くと思うんですけど、慣性が働いている状態を取得する方法が分からなかったので、離した瞬間に止まり始めます。そのため拡張前のようにすーっと一気にスクロールみたいなことは出来なくなっています。サンプルのgifのような用途の場合はよいですが、ある程度慣性が弱まってから止めたい時もあると思うので、出来ればそれもやりたかったところです。