アドオン詳細解説 - エンティティイベント
目次 (折りたたみ可)
機能
エンティティにタイムラインベースの詳細な処理を実装することができます。
エンティティイベントとは、ビヘイビアのアニメーションとアニメーションコントローラの総称です。 このサイトでは、アニメーションコントローラのことを「アニコン」と呼びます。
ファイルの場所
ビヘイビアパックのainmationsフォルダ、またはanimaton_controllersフォルダにファイルを置きます。
ビヘイビア
┣ manifest.json
┣ pack_icon.png
┣ animations
┃ ┗ 〇〇.json
┗ animation_controllers
┗ 〇〇.json
アニコンの基本事項
各「
基本構造
{
"format_version": "1.18.10",
"animation_controllers": {
"controller.animation.ex": { // このAniConのID
"states": {
"default": { // 1つのstate
"on_entry": [
// このstateに"入った"ときのイベント
],
"transitions": [
// transition
],
"on_exit": [
// このstateから"出ていく"ときのイベント
]
}
}
}
}
}
アニコンのしくみ
① 処理をはじめるとき、一番上に書かれたstateのon_entryが動作します(要検証)。
"states": {
"default": { // stateその1
"on_entry": [
// このstateに"入った"ときのイベント
],
"transitions": [
// transition
],
"on_exit": [
// このstateから"出ていく"ときのイベント
]
}
}
② 次にtransitionを処理していきます。上から順に処理するため、transitionの条件は厳しい順に上から並べる必要があります。
どの条件も満たさない場合は、また上から条件を比較して繰り返します。その間、次の処理へ移りません。
"states": {
"default": {
"on_entry": [
// このstateに"入った"ときのイベント
],
"transitions": [
{ "state1": "(条件)" }, // 条件が厳しい
{ "state2": "(条件)" },
{ "state3": "(条件)" } // 条件が易しい
],
"on_exit": [
// このstateから"出ていく"ときのイベント
]
}
}
③ 次の行き先となるstateが決まったら最後にon_exitが動作します。
"states": {
"default": {
"on_entry": [
// このstateに"入った"ときのイベント
],
"transitions": [
// transition
],
"on_exit": [
// このstateから"出ていく"ときのイベント
]
}
}
④ 行った先のstateでまたon_entryから処理が始まり、処理の順番に関しては以降同じように繰り返します。
"states": {
"default": { // 1つ目のstate
"on_entry": [
// このstateに"入った"ときのイベント
],
"transitions": [
{ "next_state": "(条件)" } // 行き先
],
"on_exit": [
// このstateから"出ていく"ときのイベント
]
},
"next_state": { // 次のstate
"on_entry": [
// このstateに"入った"ときのイベント
],
"transitions": [
// transition
],
"on_exit": [
// このstateから"出ていく"ときのイベント
]
}
}
アニコンの詳細な書き方
イベント
"on_entry"や"on_exit"で発生させられるイベントは 具体的に、(紐づけたエンティティの)イベント、コマンドの実行、Molangの変数の初期化です。
"on_entry": [
"@s (イベント名)", // イベント; @s以外は存在しません
"/say hello", // コマンドの実行; スラッシュ必須
"v.my_variable = 1.0;" // Molangの変数の初期化; セミコロン必須
]
transitions
"transitions": [
{ "(この条件で進むステートの名前)": "(Molang式で書かれた条件)" }
]
複数指定する場合は赤枠部分を増やします。
1つのファイルで複数のアニコンを書ける
{
"format_version": "1.18.10",
"animation_controllers": {
"controller.animation.ex1": { // AniCon1
"states": {
// state
}
},
"controller.animation.ex2": { // AniCon2
"states": {
// state
}
}
}
}
アニメーションの基本事項
タイムラインに沿って指定したイベントを実行します。 実行できるイベントはAniConと同じで、(紐づけたエンティティの)イベント、コマンドの実行、Molangの変数の初期化です。
基本構造
{
"format_version": "1.8.0",
"animations": {
"animation.test_events": { // このAnimのID
"timeline": {
// タイムライン
}
}
}
}
アニメーションの詳細な書き方
タイムライン
プロパティ名に時間、値にイベントを書きます。
"timeline": {
"0.0": "@s event",
"1.0": [ // 複数のイベント
"v.var1 = 1.0;",
"v.var2 = 2.0;"
],
"2.0": "/say hello"
}
アニメーションの長さ
{
"format_version": "1.8.0",
"animations": {
"animation.test_events": {
"timeline": {
// タイムライン
},
"animation_length": 5.0
}
}
}
1つのファイルで複数のアニメーションを書ける
{
"format_version": "1.8.0",
"animations": {
"animation.ex1": { // Anim1
"timeline": {
// タイムライン
}
},
"animation.ex2": { // Anim2
"timeline": {
// タイムライン
}
}
}
}