Metlivi 部落格

如何在復古風格遊戲中切換對話台詞間的角色表情

若要在對話台詞之間切換角色表情,請為每種表情準備相符的 Sprite,並緊接在需要該表情的台詞前切換角色顯示的圖片。保持 Sprite 的位置與整體輪廓一致,讓面部表情的變化清晰易讀,且不打斷場景氛圍。在 Ren’Py 中,最簡單的方法是為每個表情指定相同的圖片標籤(image tag),並搭配新的表情屬性再次使用 show;其他引擎在概念上也適用此流程,儘管具體指令各不相同。

2026年10月15日閱讀時間 6 分鐘作者:Metlivi Editorial Team
第 1 節

決定觸發表情切換的時機

請從對話劇本著手,而非 Sprite 圖集。僅標註角色表情需要出現玩家應注意到的顯著變化處:例如新的反應、語氣轉變或回到自然狀態。如果每句台詞都變換表情,表情傳達訊息的效果就會減弱,而且美術工作量也會迅速攀升。

針對每個標註的台詞,記下預期的表情以及用來呈現該表情的 Sprite 素材。一組基礎表情(如自然、高興、擔憂和驚訝)就能涵蓋許多場景。僅在特定場景需要時再增加變化版本。這是一種劇本層面的取捨,而非引擎的硬性規定:最合適的表情組合取決於遊戲的美術風格與對話內容。

第 2 節

準備可順暢替換的表情 Sprite

每個表情都應使用相同的角色構圖、縮放比例與錨點。若每張圖片都是完整的 Sprite,請確保所有檔案中的眼睛、頭部與身體位置對齊,這樣切換圖片時才不會讓角色看起來像在跳動。當 Sprite 需要疊加在場景上方時,請保持背景透明。

若是像素藝術(pixel art),請務必以遊戲的實際顯示比例檢視圖片。在切換 Sprite 時,哪怕只位移一個像素都會很明顯,而且重新縮放可能會使像素網格模糊或失真。建議以相同尺寸匯出每個表情,並採用一致的濾鏡與縮放設定進行匯入。這些都是實際製作中的必要檢查;具體設定則視引擎與專案而定。

選擇好預測的檔案或圖片名稱,例如 mira neutral 與 mira worried。在 Ren’Py 中,圖片名稱由標籤(tag)搭配後續的選用屬性組成;此標籤用於識別新的 show 指令要替換的角色圖片。Ren’Py 的圖片說明文件中詳細說明了這種命名與替換機制。

第 3 節

在 Ren’Py 中切換表情

使用圖片標籤宣告說話者,然後在對話行中加入表情屬性。例如:

define m = Character("Mira", image="mira")

label scene:
    show mira neutral
    m "The door is open."

    m worried "I thought I locked it."

    m "Maybe the wind caught it."

在此範例中,mira 是圖片標籤,而 neutral 或 worried 則是屬性。包含 worried 的那行台詞會更新顯示的角色圖片;下一行台詞則會維持該表情,因為沒有指定新的屬性。如果劇本需要明確讓她恢復為自然表情,請在最後一行加上 m neutral "..."。Ren’Py 的對話說明文件指出,以圖片標籤定義的角色可以在 say 陳述式中接收圖片屬性,且當該圖片已在畫面上顯示時,這些屬性的作用相當於對應的 show 指令。Ren’Py 對話與圖片屬性

如果您不想在畫面上顯示角色的全身 Sprite,也可以在對話介面的頭像元素上運用相同概念。引擎依然需要一種方式將當前的說話者與表情對應到圖片;頭像 UI 可能會採用不同的命名慣例或資料結構。將 Ren’Py 語法套用到其他引擎之前,請務必先查閱該引擎的相關說明文件。

第 4 節

選擇瞬間切換或轉場效果

瞬間切換非常適合俐落的復古風格,也能讓表情變化與台詞緊密結合。轉場效果可以柔化替換過程,但前提是遊戲的視覺風格適合採用。快速溶解(dissolve)可能會讓變化顯得不那麼突兀;過長的溶解則可能會延後新表情被看清的時間點。

Ren’Py 支援在圖片切換時套用如 dissolve 等轉場效果。例如,show mira worried with dissolve 會在更換顯示圖片時套用溶解效果。文件記載的預設 dissolve 耗時半秒,對於節奏較快的對話可能顯得過慢;請在實際情境中測試節奏,必要時設定較短的自訂持續時間。Ren’Py 轉場說明文件

若是像素藝術,請在遊戲預期的解析度下比較轉場效果與直接切換的差異。溶解效果會在變換過程中混合新舊像素,相較於刻意設計的階梯式跳變或瞬間切換,看起來可能會略顯模糊。這屬於需要在實際執行的場景中驗證的風格決策,而非理所當然應自動添加的效果。

第 5 節

在臉部變化時保持 Sprite 穩定

在加入更多美術素材之前,請先檢查表情替換是否更動了預期特徵以外的任何細節。比較連續畫格或截圖中的 Sprite 位置、縮放比例與輪廓。如果角色看起來有抽動現象,請對齊原始圖片,或在引擎中修正它們共用的中心軸(pivot)或原點(origin)。

此外,也需檢查圖層順序與對話時機。Sprite 切換不應意外清除背景、將角色移到其他圖片後方,或是在新台詞出現前需要玩家多進行一次點擊操作。在 Ren’Py 中,show 會替換具有相同標籤的圖片,而 hide 通常用於角色離開場景時;官方文件特別建議使用 show 來更換情緒表情,而不是分開執行隱藏與顯示 Sprite 的步驟。Ren’Py 圖片顯示規則

第 6 節

在實際對話流程中檢查切換效果

從第一次變化的前一行台詞開始試玩場景,一直執行到下一次表情變化之後。確認臉部表情是在預期的台詞行更新、在之後如預期保持不變,並僅在劇本要求時才恢復為自然狀態。若難以抉擇,請同時測試瞬間切換與轉場效果兩種版本。

在遊戲的目標解析度下檢視此流程,並確保對話框處於可見狀態。確保臉部沒有被遮擋、裁切或過小而難以辨識。若切換效果看起來有誤,請按以下順序進行排查:確認劇本中的表情名稱、確認引擎能識別且存在相符的圖片,接著檢查對齊與轉場表現。按照此順序排查,能將素材缺失或命名不符的問題與美術位置擺放問題區分開來。

完成後的配置應能確保每次表情切換都是刻意為之:劇本指定表情、對應的 Sprite 保持角色位置穩定,並透過快速試玩確保切換節奏與對話步調完全契合。

第 7 節

資料來源

相關閱讀

繼續探索這個主題