パラパラ漫画アニメーション

このサンプルは「切り替えポスター」の応用になります。

SetTextureOffset を利用して、タイリングされたテクスチャを自動で切り替えてパラパラ漫画のようなアニメーションをさせることができます。

サンプルデータ

https://virtualcast.jp/products/c6b9435426795fcc1cfee8312c34f6d51a1c2f2688d0d3ea03287f149e73b6e0

パラパラ漫画アニメーション.zip

画像作成

モデルに割り当てるUVは4×4の1マス分を指定しています。
(UVの設定はblender、Mayaなどの3Dツールをご使用ください)

使用しているテクスチャは以下のように4×4に画像をタイリングしたものを
vci.assets._ALL_SetMaterialTextureOffsetFromIndex」でUVのOffset移動を行っています。

Material名を指定する「vci.assets._ALL_SetMaterialTextureOffsetFromName」でも変更可能です。
本サンプルでは「v」というMaterial名で指定できます。


左から右、上から下の順番でカウントされていきます

VCIスクリプト

main.lua
local assets = vci.assets
local count = 0
 
local timecount=0
 
--共通変数による同期管理部分
if vci.state.Get("COUNT") then
    count = vci.state.Get("COUNT")
end
 
 
--全体の切り替え枚数  今回は4X4
local TOTAL = 16
 
--縦と横の分割数 4 
function SetTextureOffset( count )
    local offset = Vector2.zero
 
    -- y shift
    local Yshift = math.floor(count / 4)
    offset.y = -(1/4) * Yshift
 
    -- x shift
    local Xshift = count % 4
    offset.x = (1/4) * Xshift
 
    assets.material._ALL_SetTextureOffsetFromIndex(0, offset)
end
 
SetTextureOffset(count)
 
function update()
    timecount=timecount+1
    --何フレームごとに画像を切り替えるか
    if timecount>3 then
        anim()
        timecount=0
    end
end
 
--自作関数
function anim()
    if count >= TOTAL then
        count = 0
    else
        count = count + 1
    end
    vci.state.Set("COUNT", count)
    SetTextureOffset(count)
end