SetTextureOffset#

ExportMaterial.SetTextureOffset(name, offset)#

指定した名前のマテリアルを対象に、テクスチャオフセットを設定します。

Parameters:
  • name (string) -- マテリアルの名前

  • offset (Vector2) -- 設定するテクスチャオフセット

Example#

以下に図示するようなテクスチャを持つマテリアルがあるとします。 このテクスチャは 128x128 px のサイズの画像が横に 4 連結した見た目の 512x128px の画像です。

+---+---+---+---+
| a | b | c | d |
+---+---+---+---+

このマテリアルは通常 a b c d すべての領域が描画されるでしょう。 ここでマテリアルのテクスチャスケールを (0.25, 1.0) にしておくと a の領域だけが描画されるマテリアルになります。

この状態でマテリアルのテクスチャオフセットを (0.25, 0.0) にすると b の領域だけが描画されるマテリアルになります。 これは例えばスライドショーを作るのに便利です。

この a b c d の領域切り替えを Use したときに行う例を示します。

-- マテリアルの名前 "Material1"
-- マテリアルのスケール (0.25, 1.0)

-- 初期化
if vci.state.Get("index") == nil then
    vci.state.Set("index", 0)
end
vci.assets.material.SetTextureOffset("Material1", Vector2.__new(0.25 * vci.state.Get("index"), 0.0))

function onUse(subitem_name)
    -- 領域インデックスを 1 進める
    local index = vci.state.Get("index")
    index = (index + 1) % 4
    vci.state.Set("index", index)

    -- 領域インデックスに応じてオフセットを設定する
    vci.assets.material.SetTextureOffset("Material1", Vector2.__new(0.25 * index, 0.0))
end