從零元開始的電遊設計|第三階段 系統思維|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. 狀態有優先權 

 

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


20260212 Aya 一校

留言
avatar-img
瑠雅澄華音的沙龍
4會員
33內容數
以下空白。
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
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News