從零元開始的電遊設計|第三階段 系統思維|07 狀態機:讓角色不再亂跑

更新 發佈閱讀 6 分鐘
raw-image


第二階段,我們把「互動」建立起來: 

玩家能輸入、遊戲能回應、角色能動起來。

 

但只要你開始做角色控制,你一定會遇到一個經典問題:

角色到底在幹嘛?為什麼會亂跑、亂跳、亂攻擊?

 

你按攻擊,他卻還在跑步動畫; 

你按跳躍,他卻在攻擊後作用力中; 

你按互動,他卻在空中做奇怪的事情。

 

這不是程式壞掉。 

這是你缺少遊戲開發裡最重要的系統之一:

 

狀態機(State Machine)。

 

 

一、為什麼需要狀態機?

 

因為角色不是「一堆行為」, 

角色是「一個時間點只能做一件事」。

 

你不能:

 

- 一邊跑步一邊死亡 

- 一邊跳躍一邊撿東西 

- 一邊受傷一邊攻擊 

- 一邊翻滾一邊衝刺 

 

這些行為會互相打架。

 

如果你沒有狀態機,角色就會:

 

- 動畫亂跳 

- 行為互相覆蓋 

- 反應延遲 

- 手感崩壞 

- Bug 多到你懷疑人生 

 

狀態機的目的只有一個:

 

讓角色在任何時刻,都只處於一個明確的狀態。

  

二、什麼是狀態?

 

狀態不是動畫。 

狀態不是按鍵。 

狀態不是行為。

 

狀態是:

 

角色目前的「身分」。

 

例如:

 

- Idle(待機) 

- Run(跑步) 

- Jump(跳躍) 

- Fall(落下) 

- Attack(攻擊) 

- Hurt(受傷) 

- Dead(死亡) 

 

每個狀態都有:

 

- 能做什麼 

- 不能做什麼 

- 什麼時候結束 

- 結束後要轉去哪裡 

 

這就是狀態機的核心。

 

三、狀態機的基本結構:三件事

 

一個狀態機只需要三個東西:

 

1. 當前狀態(current_state)

角色現在是什麼狀態?

 

2. 狀態更新(state.update)

這個狀態每一幀要做什麼?

 

3. 狀態轉換(state.transition)

什麼條件下要換到下一個狀態?

 

就這樣。

 

你不需要複雜的架構,不需要設計模式,不需要抽象類別。 

只要這三件事,你就能做出 90% 的遊戲角色。

 

四、狀態機的第一原則:輸入不直接控制行為,而是控制「狀態」

 

例如:

 

玩家按下攻擊 → 不是「播放攻擊動畫」 

而是:

 

current_state = ATTACK

 

然後攻擊狀態自己決定:

 

- 播放什麼動畫 

- 什麼時候能取消 

- 什麼時候能轉回 Idle 

- 什麼時候能被打斷 

 

這樣你就能避免:

 

- 攻擊中還能跑步 

- 跳躍中還能攻擊 

- 受傷中還能衝刺 

 

因為狀態會阻擋不合理的行為。

 

 

五、狀態機的第二原則:狀態之間要有「邏輯」

 

狀態不是隨便切的。

 

例如:

 

可以從 Idle → Run

因為玩家按下移動。

 

可以從 Run → Jump

因為玩家按下跳躍。

 

可以從 Jump → Fall

因為速度變成負的。

 

可以從 Attack → Idle

因為動畫播完。

 

但:

 

不可以從 Dead → Run 

不可以從 Hurt → Jump 

不可以從 Attack → Attack(無限連打) 

 

這些都是狀態機要處理的邏輯。

 

六、狀態機的第三原則:狀態要能「拒絕」輸入

 

例如:

 

- 攻擊中 → 不能跳 

- 受傷中 → 不能攻擊 

- 死亡 → 不能做任何事 

 

這不是 Bug,這是設計。

 

限制,是遊戲設計的語言。

 

如果你不限制,玩家會覺得角色「不聽話」。

 

七、狀態機的第四原則:狀態要能「自動轉換」

 

例如:

 

- 跳躍 → 落下(速度變負) 

- 落下 → 落地(碰到地面) 

- 攻擊 → Idle(動畫播完) 

- 受傷 → Idle(硬直結束) 

 

這些都不是玩家輸入,而是「狀態自己決定」。

 

狀態機的強大就在這裡:

 

角色的行為不再依賴輸入,而是依賴邏輯。

 

八、狀態機的第五原則:狀態要能「覆蓋」其他狀態

 

例如:

 

- 受傷 → 覆蓋所有狀態 

- 死亡 → 覆蓋所有狀態 

- 翻滾 → 覆蓋移動與攻擊 

- 攻擊 → 覆蓋移動 

 

這些「優先權」就是狀態機的靈魂。

 

沒有優先權,你的角色就會:

 

- 跑步動畫卡在攻擊裡 

- 跳躍被移動覆蓋 

- 受傷被攻擊覆蓋 

 

然後你就會開始懷疑人生。

 

九、本篇的結論:狀態機是角色的大腦

 

角色不是動畫堆疊。 

角色不是輸入反應。 

角色不是 if-else 的混亂地獄。

 

角色是一個:

 

- 有邏輯 

- 有優先權 

- 有限制 

- 有轉換 

- 有行為規則 

 

的系統。

 

這個系統,就是狀態機。

 

只要你掌握:

 

1. 輸入控制狀態,不控制行為 

2. 狀態之間有邏輯 

3. 狀態能拒絕輸入 

4. 狀態能自動轉換 

5. 狀態有優先權 

 

你的角色就會從「亂跑亂跳」變成「聽話又有手感」。

留言
avatar-img
瑠雅澄華音的沙龍
3會員
28內容數
以下空白。
2026/02/04
在上一篇,我們談了「輸入」——玩家的意圖如何被遊戲理解。 但輸入只是互動的一半。 另一半,是遊戲如何回應玩家。 這篇我們要談的,就是遊戲裡最容易被忽略、卻最能讓遊戲「有手感」的東西: 回饋(Feedback)。
Thumbnail
2026/02/04
在上一篇,我們談了「輸入」——玩家的意圖如何被遊戲理解。 但輸入只是互動的一半。 另一半,是遊戲如何回應玩家。 這篇我們要談的,就是遊戲裡最容易被忽略、卻最能讓遊戲「有手感」的東西: 回饋(Feedback)。
Thumbnail
2026/02/03
在前幾篇,我們已經把遊戲世界的「心跳」建立起來,也讓角色能夠在世界裡存在、更新、變化。  但遊戲如果只有世界自己動,玩家卻什麼都不能做,那就不是遊戲,只是動畫。 互動的誕生,就是從「輸入」開始。 今天我們要談的不是按鍵名稱、不是 API、不是「按 A 跳躍」這種教科書式的東西。
Thumbnail
2026/02/03
在前幾篇,我們已經把遊戲世界的「心跳」建立起來,也讓角色能夠在世界裡存在、更新、變化。  但遊戲如果只有世界自己動,玩家卻什麼都不能做,那就不是遊戲,只是動畫。 互動的誕生,就是從「輸入」開始。 今天我們要談的不是按鍵名稱、不是 API、不是「按 A 跳躍」這種教科書式的東西。
Thumbnail
2026/02/02
在前幾篇裡,我們讓遊戲世界開始「做選擇」(if)、  「承擔後果」(else)、並且「持續發生」(loop)。 但還缺一個東西。  一個讓遊戲世界能「記住剛剛發生什麼」的地方。 這個東西,就是變數。 很多人第一次學程式時,會把變數當成: - 一個盒子,裡面放數字 
Thumbnail
2026/02/02
在前幾篇裡,我們讓遊戲世界開始「做選擇」(if)、  「承擔後果」(else)、並且「持續發生」(loop)。 但還缺一個東西。  一個讓遊戲世界能「記住剛剛發生什麼」的地方。 這個東西,就是變數。 很多人第一次學程式時,會把變數當成: - 一個盒子,裡面放數字 
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
Thumbnail
交換彼此看到的風景,一起創造改變 再好的願景都必須要有伯樂一同打造,只是下一步該怎麼踏出去? 不只把事情做好,還要好玩,而遊戲化的方式最容易讓人入門且養成習慣,這也是【恆毅力的七堂課】中提到的「迷人的魅力」!
Thumbnail
交換彼此看到的風景,一起創造改變 再好的願景都必須要有伯樂一同打造,只是下一步該怎麼踏出去? 不只把事情做好,還要好玩,而遊戲化的方式最容易讓人入門且養成習慣,這也是【恆毅力的七堂課】中提到的「迷人的魅力」!
Thumbnail
稍早「台北國際電玩展」釋出展場平面圖,過去只要看展場平面圖就能知道本屆精不精彩,現在因為手遊崛起的緣故,感覺「台北國際電玩展」都可以改成「台北手遊電玩展」了。雖說疫情之下能有展覽可以參加是很幸福的事,但不得不說,「台北國際電玩展」的品質已不復過往。
Thumbnail
稍早「台北國際電玩展」釋出展場平面圖,過去只要看展場平面圖就能知道本屆精不精彩,現在因為手遊崛起的緣故,感覺「台北國際電玩展」都可以改成「台北手遊電玩展」了。雖說疫情之下能有展覽可以參加是很幸福的事,但不得不說,「台北國際電玩展」的品質已不復過往。
Thumbnail
《迷霧國度:傳承》最新開發進度,這禮拜除了與大家聊聊試玩版的狀況外,還有新角色、新場景要分享給你。喜歡回合制戰棋和美式RPG的朋友,歡迎來看看唷。
Thumbnail
《迷霧國度:傳承》最新開發進度,這禮拜除了與大家聊聊試玩版的狀況外,還有新角色、新場景要分享給你。喜歡回合制戰棋和美式RPG的朋友,歡迎來看看唷。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News