このページは過去の情報となります。
新しいスクリプトリファレンスはこちらになります。
アニメーションに関するクラスです。
アニメーションの設定は、 Animationを組込んだEmptyの子に動かしたいObjectを置くをご覧ください。
ExportTransform | ||
---|---|---|
名前 | 説明 | バージョン |
GetAnimation | VCI内のアニメーションを取得 | |
ExportAnimation | ||
名前 | 説明 | バージョン |
GetCount | アニメーションの数を取得 | |
GetNames | アニメーションの名前を取得 | |
HasClip | アニメーションが存在するかどうか | 1.8.2a以降 |
IsPlaying | アニメーションが再生中かどうか | 1.8.2a以降 |
Play | 再生 | |
PlayFromIndex | インデックス番号で指定して再生 | |
PlayFromName | ファイル名で指定して再生 | |
PlayOneShot | アニメーションを1回だけ再生 Play(false)に相当します。 | |
PlayWithState | 状態を指定して再生 | 1.8.2a以降 |
Blend | アニメーションをブレンドして再生 | 1.8.2a以降 |
CrossFade | アニメーションをクロスフェードして再生 | 1.8.2a以降 |
SetState | アニメーションの状態を指定 | 1.8.2a以降 |
SetTime | アニメーションの再生時間を指定 | 2.3.9a以降 |
Stop | 再生を停止 | 1.8.2a以降 |
Rewind | 再生中のアニメーションを巻き戻し | 1.8.2a以降 |
GetDuration | アニメーションの長さ(ファイル名) | 2.3.4a以降 |
GetDurationFromIndex | アニメーションの長さ(インデックス番号) | 2.3.4a以降 |
GetCurrentTime | アニメーションの再生位置(ファイル名) | 2.3.4a以降 |
GetCurrentTimeFromIndex | アニメーションの再生位置(インデックス番号) | 2.3.4a以降 |
_ALL_
を含む関数は、他のクライアントでも実行され同期します。
全てのクライアントで同じ結果になってほしい場合は _ALL_
を含む関数を使用してください。
Play _ALL_Play
名前 | 型 | 説明 |
---|---|---|
speed | number | 再生速度を指定します。デフォルト値は1です。0以上の値を設定してください。 |
weight | number | ブレンドウェイトを指定します。デフォルト値は1です。0以上1以下の値を設定してください。 |
wrap_mode | string | ラップモードを指定します。デフォルト値はonceです。once, loop, ping_pongを指定できます。 |
設定例
tableをjsonに変換して渡します。
local table = { wrap_mode="loop", speed=0.2} local jsonString = json.serialize(table) anim.PlayWithState("アニメーション名", jsonString)
Blendの設定可能項目
名前 | 型 | 説明 |
---|---|---|
target_weight | number | ブレンドウェイトを指定します。デフォルト値は1です。0以上の値を設定してください。 |
fade_length | number | フェード時間(秒)を指定します。デフォルト値は0.3秒です。0以上の値を指定してください。 |
UnityのAnimation.Blendに相当する機能です。 Animation.Blend
設定例
tableをjsonに変換して渡します。
local table = { wrap_mode="loop", speed=1} local jsonString = json.serialize(table) anim.SetState("再生中のアニメーション", jsonString) anim.Blend("ブレンドするアニメーション", json.serialize({target_weight=2, fade_length=1}))
CrossFadeの設定可能項目
名前 | 型 | 説明 |
---|---|---|
fade_length | number | フェード時間(秒)を指定します。デフォルト値は0.3秒です。0以上の値を指定してください。 |
UnityのAnimation.CrossFadeに相当する機能です。 Animation.CrossFade
設定例
tableをjsonに変換して渡します。
anim.CrossFade("アニメーション名", json.serialize({fade_length=1}))
オプションを指定しない場合は、空文字列を渡してください。
anim.CrossFade("アニメーション名", ""))
local chan_1 = vci.assets.GetTransform("SD_unitychan_generic_1") local chan_2 = vci.assets.GetTransform("SD_unitychan_generic_2") local chan_3 = vci.assets.GetTransform("SD_unitychan_generic_3") -- ExportTransformからアニメーションを入手 local chanAnime_1 = chan_1.GetAnimation() local chanAnime_2 = chan_2.GetAnimation() local chanAnime_3 = chan_3.GetAnimation() -- 再生 chanAnime_1.Play(true) -- PlayFromIndex(0, true)と同じ chanAnime_2.PlayOneShot() -- PlayFromIndex(0, false)と同じ chanAnime_3.PlayFromName("Damaged@loop", true) -- アニメーションの数と名前を入手できます print(chanAnime_3.GetCount()) local names = chanAnime_3.GetNames() for i,m in ipairs(names) do print(string.format("%d[%s]",i,m)) end
実行結果
(3種類のアニメーションが再生されます)
GetCount: fun(): number
アニメーションの数を取得します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) print(SubitemAnime.GetCount()) end
実行結果
2
GetNames: fun(): usertype
アニメーションの名前を取得します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) for key, value in pairs(SubitemAnime.GetNames()) do print(key.. ' = ' ..value) end end
実行結果
"1 = Anim1" "2 = Anim2"
HasClip: fun(name: string): bool
アニメーションが存在するかどうかを示します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) print(SubitemAnime.HasClip("Anim1")) end
実行結果
true
IsPlaying: fun(): bool
アニメーションが再生中かどうかを示します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) print(SubitemAnime.IsPlaying()) end
実行結果
false
Play: fun(isloop: bool)
_ALL_Play: fun(isloop: bool)
引数に true を入れた場合ループ再生し、false の場合1回だけ再生されます。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) SubitemAnime.Play(false) end
実行結果
1回だけアニメーションが再生されます。
PlayFromIndex: fun(index: number, isloop: bool)
_ALL_PlayFromIndex: fun(index: number, isloop: bool)
アニメーションをインデックス番号で指定して再生します。
引数に true を入れた場合ループ再生し、false の場合1回だけ再生されます。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) SubitemAnime.PlayFromIndex(0, true) end
実行結果
インデックス番号0のアニメーションがループ再生されます。
PlayFromName: fun(name: string, isloop: bool)
_ALL_PlayFromName: fun(name: string, isloop: bool)
アニメーションをファイル名で指定して再生します。
引数に true を入れた場合ループ再生し、false の場合1回だけ再生されます。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) SubitemAnime.PlayFromName('Anim1', true) end
実行結果
ファイル名'Anim1'のアニメーションがループ再生されます。
PlayOneShot: fun()
_ALL_PlayOneShot: fun()
アニメーションを1回だけ再生します。
Play(false)に相当します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) SubitemAnime.PlayOneShot() end
実行結果
インデックス番号0のアニメーションを1回だけ再生します。
PlayWithState: fun(name: string, states: string)
_ALL_PlayWithState: fun(name: string, states: string)
状態を指定して再生します。
名前 | 型 | 説明 |
---|---|---|
speed | number | 再生速度を指定します。デフォルト値は1です。0未満を指定した場合逆再生になります。 |
weight | number | ブレンドウェイトを指定します。デフォルト値は1です。0以上1以下の値を設定してください。 |
wrap_mode | string | ラップモードを指定します。デフォルト値はonceです。once, loop, ping_pongを指定できます。 |
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() local table = { wrap_mode="ping_pong", speed=0.8} local jsonString = json.serialize(table) function onUse(use) SubitemAnime.PlayWithState("Anim1", jsonString) end
実行結果
ファイル名"Anim1"のアニメーションがスピード0.8で再生と逆再生を繰り返します。
Blend: fun(name: string, options: string)
_ALL_Blend: fun(name: string, options: string)
アニメーションをブレンドして再生します。
名前 | 型 | 説明 |
---|---|---|
target_weight | number | ブレンドウェイトを指定します。デフォルト値は1です。0以上の値を設定してください。 |
fade_length | number | フェード時間(秒)を指定します。デフォルト値は0.3秒です。0以上の値を指定してください。 |
UnityのAnimation.Blendに相当する機能です。 Animation.Blend
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() local table = { wrap_mode="loop", speed=1} local jsonString = json.serialize(table) function onUse(use) SubitemAnime.PlayWithState("Anim1", jsonString) SubitemAnime.Blend("Anim2", json.serialize({target_weight=2, fade_length=1})) end
実行結果
"Anim1"と"Anim2"をブレンドして再生します。
CrossFade: fun(name: string, options: string)
_ALL_CrossFade: fun(name: string, options: string)
アニメーションをクロスフェードして再生します。
名前 | 型 | 説明 |
---|---|---|
fade_length | number | フェード時間(秒)を指定します。デフォルト値は0.3秒です。0以上の値を指定してください。 |
UnityのAnimation.CrossFadeに相当する機能です。 Animation.CrossFade
オプションを指定しない場合は、空文字列を渡してください。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() local table = { wrap_mode="loop", speed=1} local jsonString = json.serialize(table) function onUse(use) SubitemAnime.PlayWithState("Anim1", jsonString) SubitemAnime.CrossFade("Anim2", json.serialize({fade_length=1})) end
実行結果
"Anim1"から"Anim2"にクロスフェードして再生します。 (1.8.2a)
SetState: fun(name: string, states: string)
_ALL_SetState: fun(name: string, states: string)
アニメーションの状態を指定します。
名前 | 型 | 説明 |
---|---|---|
speed | number | 再生速度を指定します。デフォルト値は1です。0以上の値を設定してください。 |
weight | number | ブレンドウェイトを指定します。デフォルト値は1です。0以上1以下の値を設定してください。 |
wrap_mode | string | ラップモードを指定します。デフォルト値はonceです。once, loop, ping_pongを指定できます。 |
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() SubitemAnime.PlayFromName('Anim1', true) function onUse(use) local table = { speed=0.5 } local jsonState = json.serialize(table) SubitemAnime.SetState("Anim1", jsonState) end
実行結果
Use したとき "Anim1" アニメーション再生を速度 0.5 に設定します。
SetTime: fun(name: string, time: number)
アニメーションの再生時間を指定します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) SubitemAnime.Play(false) SubitemAnime.SetTime('Anim1', 5) end
実行結果
Use したとき "Anim1" アニメーションを5秒マークから再生します。
Stop: fun()
_ALL_Stop: fun()
アニメーションの再生を停止します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) SubitemAnime.Stop() end
実行結果
再生されているアニメーションが停止します。
Rewind: fun()
_ALL_Rewind: fun()
再生中のアニメーションを巻き戻します。
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubitemAnime = Anime.GetAnimation() function onUse(use) SubitemAnime.Rewind() end
実行結果
アニメーションを最初から再生し直します。
使用するには下記の環境が必要です。
GetDuration: fun(name: string): number
AnimationClip名(String)
返り値
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubItemAnime = Anime.GetAnimation() function onUse(use) local Duration = SubItemAnime.GetDuration("Anim1") print("Duration: "..tostring(Duration)); end
実行結果(Useした際の出力)
Duration: 5.412
使用するには下記の環境が必要です。
GetDurationFromIndex: fun(index: number): number
インデックス番号(number)
返り値
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubItemAnime = Anime.GetAnimation() function onUse(use) local Duration = SubItemAnime.GetDurationFromIndex(0) print("Duration: "..tostring(Duration)); end
実行結果(Useした際の出力)
Duration: 5.412
使用するには下記の環境が必要です。
GetCurrentTime: fun(name: string): number
AnimationClip名(String)
返り値
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubItemAnime = Anime.GetAnimation() function onGrab() SubItemAnime.PlayFromIndex(0, false) end function onUse() local CurrentTime = SubItemAnime.GetCurrentTime("Anim1") print("CurrentTime: "..tostring(CurrentTime)); end
実行結果(Grabした後にUseした際の出力)
CurrentTime: 1.546
使用するには下記の環境が必要です。
GetCurrentTimeFromIndex: fun(index: number): number
インデックス番号(number)
返り値
サンプル
local Anime = vci.assets.GetTransform("Anime") local SubItemAnime = Anime.GetAnimation() function onGrab() SubItemAnime.PlayFromIndex(0, false) end function onUse() local CurrentTime = SubItemAnime.GetCurrentTimeFromIndex(0) print("CurrentTime: "..tostring(CurrentTime)); end
実行結果(Grabした後にUseした際の出力)
CurrentTime: 1.546