Language:

サイドバー

バーチャルキャスト公式Wiki

メニュー

Steam版

デバイス

アセット

配信

その他

リリース情報

デベロッパー向け


開発環境

GLB

vci:sample:material:light

色とアニメ切替ライト

ExportStateを利用して、色と光の形状を変更するライトのサンプルVCIです。
色と光それぞれの状態を同期変数を定義することで、ユーザー間で同期するようになっています。
ライトの先端黒い部分をonUseするとライトの光が拡縮アニメーションをします。
ライトの後方白い部分をonUseするとライトの色が変化します。

サンプルデータ

https://virtualcast.jp/products/8ff27fbabc1414b88b29beae1c431720bb48e96e3aaa0c88a0082760dccd0665

tutorial_切替ライト.zip

main.lua
local state=0 --0みじかい 1ながい
local color_state=0 --0 白   他 色の状態
local to_color = Color.__new(1,0,0,1)--オリジナルカラー
 
local Anime = vci.assets.GetTransform("light_forstage")
local SubitemAnime = Anime.GetAnimation()
 
function onUse(use)
    --同期処理--------------------------------
    if vci.state.Get("STATE")==nil then--状態 stateの同期
        vci.state.Set("STATE",state)
    else
        state=vci.state.Get("STATE")--グリップ時に共通変数で同期取得
    end
 
    if vci.state.Get("COLOR_STATE")==nil then--状態 light_stateの同期
        vci.state.Set("COLOR_STATE",color_state)
    else
        color_state=vci.state.Get("COLOR_STATE")--グリップ時に共通変数で同期取得
    end
 
    --光の形状の状態------ベース部分を掴んだ場合の処理---------------
    if use=="light_forstage" then
    print("base_grab_OK")---------------
        if state==0 then
            SubitemAnime._ALL_PlayFromName("light_long",false)
            state=1
            vci.state.Set("STATE",state)
        elseif state==1 then
            SubitemAnime._ALL_PlayFromName("light_short",false)
            state=0
            vci.state.Set("STATE",state)
        end
    end
 
    --ライトコントローラーを掴んだ場合の処理-------------------------
    if use=="light_controller" then
        color_state=color_state+1
        print("light_grab_OK")---------------
        if color_state>7 then
            color_state=0--オリジナルカラーに
        end
        vci.state.Set("COLOR_STATE",color_state)--同期
 
        if color_state==0 then
            to_color = Color.__new(1,1,1,0.2)--オリジナルカラー
            vci.assets.material._ALL_SetColor ("light_light",to_color)
            vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
            elseif color_state==1 then
                to_color = Color.__new(1,0,0,0.2)--red
                vci.assets.material._ALL_SetColor ("light_light",to_color)
                vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
                elseif color_state==2 then
                    to_color = Color.__new(1,0.65,0,0.2)--orange
                    vci.assets.material._ALL_SetColor ("light_light",to_color)
                    vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
                    elseif color_state==3 then
                        to_color = Color.__new(1,1,0,0.2)--yellow
                        vci.assets.material._ALL_SetColor ("light_light",to_color)
                        vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
                            elseif color_state==4 then
                            to_color = Color.__new(0,0.5,0,0.2)--green
                            vci.assets.material._ALL_SetColor ("light_light",to_color)
                            vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
                                elseif color_state==5 then
                                to_color = Color.__new(0,1,1,0.2)--blue
                                vci.assets.material._ALL_SetColor ("light_light",to_color)
                                vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
                                    elseif color_state==6 then
                                    to_color = Color.__new(0,0,1,0.2)--indigo
                                    vci.assets.material._ALL_SetColor ("light_light",to_color)
                                    vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
                                        elseif color_state==7 then
                                        to_color = Color.__new(0.5,0,0.5,0.2)--violet
                                        vci.assets.material._ALL_SetColor ("light_light",to_color)
                                        vci.assets.material._ALL_SetColor ("light_noshadow",to_color)
                                            else
                                                ----何もしない
 
        end
    end-----------
end
vci/sample/material/light.txt · 最終更新: 2023/10/03 19:58 by pastatto

ページ用ツール