Textureのスクロールについて
テクスチャをスクロールさせたくて、以下のコードを書いてみたけど、うまく行かない。
public class TextureScroll : MonoBehaviour { public Vector2 speed; // Use this for initialization void Start () { } // Update is called once per frame void Update () { var x = (Time.time * speed.x) % 1; var y = (Time.time * speed.y) % 1; var vec = new Vector2(x, y); renderer.material.mainTextureOffset = vec; } }
いろいろ調べてみたら、テクスチャのWrap ModeがRepeatになってないと
ダメらしい。
とりあえず、Repeatにすることで、スクロールは可能となった。
ただし、Texture TypeがGUIにはWrap Modeがなく、
CursorにはWrap Modeがあるのに、Repeatを設定しても、
Apply押下時にClampに戻ってしまう。
これはバグなのかな??
facebookのunityコミュで聞いてみたところ
そもそもCursorタイプはカーソルで利用するためのものであり、
テクスチャとして繰り返させること自体に意味が無いとのことでした。つまり、Wrap Modeが設定項目にある事自体が
おかしいのかな??どちらにしろ、CursorのWrap Modeは利用できないということで
考えておいたほうが良さそうです。https://www.facebook.com/groups/unityuserj/permalink/603806109679333/
他のTexture Typeだとテクスチャが汚くなるし、どうしたもんか。
ちなみに、iPhone実機だと、単に時間経過でスクロールさせてると、
x,yの値がかなり大きくなり、
徐々にスクロールスピードが落ちていくため
テクスチャサイズ範囲内の値で繰り返されるように
(Time.time * speed) % 1
としてます。