リファレンス URL:texture_set_repeat(repeat);

戻り値無し(Returns: N/A) 

反復型テクスチャ(ラップ=wrap)の利用をオン・オフで切り替えます。

デフォルトではオフとなっている設定で、この関数から行う設定の変更はスプライトおよび背景をテクスチャとして利用する際の表示に影響を与えます。オンの場合、テクスチャが継ぎ目なくラップされるようになります。

2D プリミティヴを利用する際に、この設定をオンにすることで UVスクロールを実現できます。

参考URL(2dgames.jp):GameMakerでUVスクロールする方法

ただしテクスチャサイズの設定を間違えると隙間が空いてしまうため上手にラップされません。テクスチャは正方形で有る必要はなく長方形でも大丈夫ですが、テクスチャとして扱うことのできる最大サイズから上手にラップできるサイズを割り出していく方法が確実。

普通に正方形で利用することを考えたほうが効率的ではあります。

グローバルゲームセッティングからテクスチャページのサイズを見ます。デフォルトだと 2048x2048なので、これを2で割っていけばラップで使える安全なテクスチャサイズが求められます。

    1024x1024 1024x512 512x512 512x256 256x256 256x128 128x128 128x64 64x32 32x32 32x16 16x16 .. . 以下略
上記組み合わせの例なら大丈夫。これ以外のサイズを試した場合には、たぶん上手にラップできない環境があります。 スクリプト・サンプル
/* このソースコードは http://2dgames.jp/2014/02/07/uv/ の物を改変しました テクスチャグループはUVスクロール用に新規作成してそちらに格納すること */ self.timer--; var bk = sky_background;/* background image */ background_index[0] = bk; draw_set_colour(-1);/* -1 or c_white */ texture_set_repeat(true);/* repeat ON */ var tex = background_get_texture(bk); var v1 = (timer%room_speed)/room_speed;/* 0 ~ 1 */ var v2 = v1+1;/* 1 ~ 2 */ /* Begin Statement */ draw_primitive_begin_texture(pr_trianglefan, tex); var a,b; a = background_width[0] *2;/* 128 px */ b = background_height[0]*2;/* 128 px */ draw_vertex_texture(0, 0, 0, v1);/* vert 1 */ draw_vertex_texture(a, 0, 1, v1);/* vert 2 */ draw_vertex_texture(a, b, 1, v2);/* vert 3 */ draw_vertex_texture(0, b, 0, v2);/* vert 4 */ /* End Statement */ draw_primitive_end(); texture_set_repeat(false);/* repeat OFF */ draw_text(100,100,v1);/* For Debug */
Functions/texture_set_repeat

Leave a Reply

Your email address will not be published. Required fields are marked *