🧱Bedrock Academy

Animation Controllers

কখন কোন animation চলবে তা state ও query দিয়ে নিয়ন্ত্রণ — যেমন হাঁটলে walk, থামলে idle।

⏱ ~16 মিনিট

একটা animation বানানো এক জিনিস, কিন্তু কখন সেটা চলবে তা ঠিক করা আরেক জিনিস। মব দাঁড়িয়ে থাকলে idle, হাঁটলে walk — এই সিদ্ধান্ত নেয় Animation Controller

Controller = state machine

Controller-এ কয়েকটা state থাকে (যেমন idle, moving)। প্রতিটা state-এ ঠিক করা থাকে — এই অবস্থায় কোন animation চলবে, আর কোন শর্ত (query) সত্যি হলে অন্য state-এ লাফ দেবে।

resource_pack/animation_controllers/dragon.ac.json
1{
2 "format_version": "1.10.0",
3 "animation_controllers": {
4 "controller.animation.dragon.move": {
5 "initial_state": "idle",
6 "states": {
7 "idle": {
8 "animations": ["idle"],
9 "transitions": [
10 { "moving": "query.modified_move_speed > 0.1" }
11 ]
12 },
13 "moving": {
14 "animations": ["fly"],
15 "transitions": [
16 { "idle": "query.modified_move_speed <= 0.1" }
17 ]
18 }
19 }
20 }
21 }
22}
  • L5initial_state: মব জন্মালে কোন state-এ শুরু হবে।
  • L8animations: এই state-এ কোন animation চলবে (client entity-র শর্ট-নাম)।
  • L10transition: query সত্যি হলে "moving" state-এ যাবে।
  • L11query.modified_move_speed: মব এখন কত জোরে নড়ছে — নড়লে fly state।
  • L16গতি কমে গেলে আবার idle state-এ ফিরবে।

Controller-কে মবের সাথে যুক্ত করা

resource_pack/entity/dragon.json (description অংশে)
1"animations": {
2 "idle": "animation.dragon.idle",
3 "fly": "animation.dragon.fly",
4 "move_ctrl": "controller.animation.dragon.move"
5},
6"scripts": {
7 "animate": ["move_ctrl"]
8}
  • L4controller-ও animation-এর মতো একটা শর্ট-নাম দিয়ে map করা হয়।
  • L7animate-এ animation নয়, controller চালাও — controller নিজে ঠিক করবে কোন animation।