跳至正文
所有教學

AI 角色動畫

從一張角色圖到可操作的 2D 角色:待機、跑動和攻擊

沿用同一張機器人圖片,補齊待機和跑動,把四段 24 FPS 透明動畫接到方向鍵與攻擊鍵。附可玩示範、Godot 實際執行影片、精靈圖與範例專案。

AnimGen更新於 10 分鐘閱讀
同一個橘色機器人的待機、跑動、直拳與前踢四種動畫姿勢
本文目錄

按住方向鍵讓角色跑起來,放開停下,出一拳,再繼續移動。把動畫接到操作上之後,切換時的大小變化、腳底位置和收招時機就更容易看出來了。

上一期,我們從同一段影片拆出了橘色機器人的直拳和前踢。這次沿用同一張角色圖,補上格鬥待機與原地跑動,把四段透明動畫接進一個小場景,全部維持 24 FPS。

同一套四動作素材在 Godot 4.7.2 中實際執行:待機、向右跑動、出拳、向左跑動、踢腿。錄製為 24 FPS。

直接開啟瀏覽器操作示範:方向鍵或 A/D 移動,J 出拳,K 踢腿;手機上按住方向按鈕。頁面預設暫停,點擊開始或操作按鈕後播放。

四個動作共用一張角色圖

這次繼續使用橘色機器人原圖,保留相同的裝甲顏色、頭身比例和朝右視角。每個動作都從這張圖開始,減少重新繪製角色帶來的外觀變化。

同一機器人在統一透明畫布上的四段動畫及各自影格數,圖中標籤使用英文

構圖也沿用前篇設定:4:3 畫布,Expand Canvas 縮放 80%,位置 X 為 0.35、Y 為 0.5,給右側拳腳留出空間。如何為大動作安排留白,可以看 Expand Canvas 案例。

向左移動時,示範把整套圖片水平鏡像。這個機器人沒有文字或單側武器,用同一套素材轉身比較方便。如果角色拿著盾牌,或衣服上有字,就要檢查鏡像後是否符合設計。

分別產生安靜的待機和原地跑動

待機提示詞要求雙腳站定、拳頭維持準備姿勢,胸口和肩膀只有輕微起伏。這樣放開方向鍵後,角色能安靜地停下來,不會立刻踏步或做出另一個大動作。

跑動提示詞則要求朝右、在原地連續跑動,鏡頭與角色尺度保持固定。場景中的橫向位置交給程式控制,素材本身保留擺臂、抬腿和身體起伏。

兩次請求都使用 Seedance 2.0 Fast、4 秒、480p、4:3 和 Alpha Key。本次實際各扣 36 點數,共 72 點數;透明 PNG 序列與 ProRes 4444 匯出均為 0 點數。直拳和前踢重用前篇的 720p 素材,沒有再次產生。這是 2026-10-03 的實際費用紀錄,後續以產生前報價為準。

可以下載實際使用的待機提示詞、跑動提示詞,以及帶鍵色背景的待機原片、跑動原片。兩條原片實際都是 752 × 560、97 影格、24 FPS,約 4.04 秒;請求的解析度級別、回傳尺寸和執行時畫布分別對應不同環節。

待機和跑動選循環,攻擊保留完整起落

四秒原片足夠挑出一段呼吸或步態週期。我們先連續播放幾個週期,再檢查末尾接回開頭時的姿勢,保留以下連續影格。表內來源影格編號從 0 開始,包含首尾。

動作 來源影格範圍 保留影格數 24 FPS 時長 播放方式
待機 22–56 35 約 1.46 秒 循環
跑動 44–59 16 約 0.67 秒 循環
直拳 9–44 36 1.50 秒 單次
前踢 58–88 31 約 1.29 秒 單次
35 影格待機循環,維持 24 FPS。胸口與手臂有輕微活動,雙腳留在原位。影片加上深色底方便觀看。
16 影格原地跑動循環,維持 24 FPS。場景位移由控制器另外處理;下載包中的圖片保留透明通道。

待機與跑動各自最後兩影格和最前兩影格的接縫對照,標籤為英文及來源影格編號

跑動保留完整步態,再從第 59 影格回到第 44 影格。沒有降成 12 FPS,也沒有額外產生過渡影格。循環檢查方式可參考行走循環文章;直拳與前踢的起手、收招來自上一期的兩個動作選段。

用統一畫布和原點對齊四段動畫

每段動畫都放進 512 × 384 的透明畫布,維持原始長寬比。新增待機與跑動先把整個影格等比縮放為 512 × 381,再放進畫布,避免把 752 × 560 硬拉成另一種比例。

比較站姿與落腳位置後,我們對待機整段固定平移 X −2、Y +3 像素,跑動整段固定平移 X −24、Y +3 像素。直拳與前踢沿用原位置。四段共用從左上角起算的原點 (224, 321),在場景中以 0.85 倍顯示。

這些數值屬於本次機器人素材。換角色時,先比較各段的頭頂、腳底和軀幹位置,再決定如何對齊。整段固定偏移可以保留跑步的自然起伏;逐影格緊貼輪廓裁切,則可能讓角色在切換和播放時跳動。畫布與軸點文件說明了這兩種設定的差別。

攻擊播完後,再回應目前方向

小場景使用 idle、run、punch 和 kick 四個狀態。沒有攻擊時,有方向輸入就跑動,放開就待機;同時按住左右鍵則停下。

按 J 或 K 後,控制器鎖住橫向位置和朝向,讓攻擊完整播放一次,期間的新攻擊輸入直接忽略。動畫結束時重新讀取方向:仍按著就繼續跑,已放開就回到待機。長按攻擊鍵只觸發一次,下次需要放開再按。

Godot 範例透過 AnimatedSprite2D.animation_finished 處理收招。直拳與前踢關閉循環,待機與跑動開啟循環;循環動畫不會發出這個完成訊號。Godot 官方文件

gdscript
func _attack_finished() -> void:
    if _attacking():
        completed[state] += 1
        _locomotion()

_locomotion() 會讀取目前方向,再選擇 run 或 idle。完整實作已放進下載專案,不必自己拼接這段函式。這個場景先處理移動與動畫切換,未加入敵人、命中偵測或傷害計算。

在 Godot 中試手感,移動速度分開調

Godot 4.7.2 中實際執行的橘色機器人,頂部以英文顯示操作鍵、目前動作與 24 FPS

下載 Godot 範例專案,解壓縮後在 Godot 4 匯入 project.godot,按 F5 執行。專案從 character.json 讀取四張透明精靈圖及影格區域,建立 SpriteFrames,無須安裝外掛。本次在 macOS 的 Godot 4.7.2、Compatibility 算繪器中執行並錄製了開頭的影片。

移動速度預設 280 px/s,動畫維持 24 FPS。這是可調整的示範速度;換角色或縮放比例後,還需要再觀察腳掌著地時的滑動。網頁速度滑桿的範圍為 60–600 px/s;Godot 專案可修改 assets/character.json 中的 defaultSpeed。保持播放影格率,再調位移速度,較容易判斷步態與移動是否合拍。

試著在跑動中出拳、攻擊期間按相反方向、收招前放開所有按鍵。角色應完整做完攻擊,再按目前輸入行動。網頁隱藏或視窗失焦時會清理按鍵並暫停,回來後不會繼續沿用先前按住的方向。

下載素材,換成自己的角色

透明精靈圖包包含四張 PNG、影格區域、播放影格率和選格與對齊配方。依 JSON 的影格數讀取,避免把圖集末尾的空格加入播放序列。網頁與 Godot 使用透明圖片,文內 MP4 為觀看方便合成了背景。

這套多動作控制器與下載包是以真實匯出素材製作的教學範例。自己製作時,可以先按Godot 匯入教學確認素材,再替換四個動作的精靈圖與影格資料。尺寸、雜湊、費用與匯出檢查保存在素材紀錄。

把停止、轉身和一次完整攻擊試順以後,再決定角色缺什麼動作。需要補充動畫時,回到 AnimGen 工作台,沿用確定好的角色圖、鏡頭和畫布留白。

查看圖片細節