アニメーションとアニメーションコントローラー
アニメーション
アニメーションコントローラー
アニメーションコントローラーは状況に応じてアニメーションを再生してくれるもの
例
code:animation_controler.json
{
"format_version" : "1.10.0",
"animation_controllers" : {
"controller.animation.yamato.maid_sitting" : {
"states" : {
"default_state" : {
"transitions" : [
{
"attack_state" : "query.is_sitting"
}
],
"blend_transition" : 0.1
},
"attack_state" : {
"transitions" : [
{
"default_state" : "!query.is_sitting"
}
],
"blend_transition" : 0.1
}
},
"initial_state" : "default_state"
}
}
}
15行目で再生するアニメーションを指定しているのだが(今回の場合なつかせた後お座りするアニメーションを変更している)ここにはresorce_pack/entity/*****.jsonで定義したアニメーション名を用いるらしい
今回はsit_maidとなっている(下の52行目でsit_maidとしてアニメーションを定義している)
code:/resorce_pack/entity/*****.json
{
"format_version": "1.10.0",
"minecraft:client_entity": {
"description": {
"identifier": "yamato:maid",
...省略...
"animations" : {
"idle" : "animation.humanoid.base_pose",
"move" : "animation.humanoid.move",
"look_at_target_default" : "animation.humanoid.look_at_target.default",
"look_at_target_gliding" : "animation.humanoid.look_at_target.gliding",
"look_at_target_swimming" : "animation.humanoid.look_at_target.swimming",
"charging" : "animation.humanoid.charging",
"damage_nearby_mobs" : "animation.humanoid.damage_nearby_mobs",
"swimming" : "animation.humanoid.swimming",
"use_item_progress" : "animation.humanoid.use_item_progress",
"move_controller" : "controller.animation.humanoid.move",
"look_at_target_controller" : "controller.animation.humanoid.look_at_target",
"look_at_target" : "animation.common.look_at_target",
"riding.legs" : "animation.humanoid.riding.legs",
"riding" : "controller.animation.humanoid.riding",
"riding.arms" : "animation.humanoid.riding.arms",
"sit_contr" : "controller.animation.yamato.maid_sitting",
"sit_maid" : "animation.maid.taiki"
},
"scripts" : {
"pre_animation" : [
"variable.tcos0 = (Math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed / variable.gliding_speed_value) * 57.3;",
"variable.tcos1 = -variable.tcos0;",
"variable.attack_body_rot_y = Math.sin(Math.sqrt(variable.attack_time) * 360.0) * 11.46;",
"variable.cos_attack_body_rot_y = Math.cos(variable.attack_body_rot_y);",
"variable.sin_attack_body_rot_y = Math.sin(variable.attack_body_rot_y);",
"variable.internal_swim_pos = Math.mod(query.modified_distance_moved, 26.0);",
"variable.attack = Math.sin((1.0 - (1.0 - variable.attack_time) * (1.0 - variable.attack_time)) * 180.0) * 57.3;",
"variable.attack2 = Math.sin(variable.attack_time * 180.0) * 57.3;",
"variable.z_bob = Math.cos(query.life_time * 103.13244) * 2.865 + 2.865;",
"variable.x_bob = Math.sin(query.life_time * 76.776372) * 2.865;"
],
},
...省略...
アニメーションコントローラーを作成したら、resorce_pack/entity/****.jsonにアニメーションとアニメーションコントローラーを定義する(クライアントエンティティファイル内でリンクする必要がある)
上の例では35-68行目でそれを行っている
67行目のanimateプロパティのところで常に再生するアニメーションを指定する
おそらくここにはアニメーションコントローラーを指定するのが一般的?
ここにアニメーションを指定してしまうと、同じアニメーションが再生され続けると思う、、、