FableQuest
小技帳
小技 001 · 打擊停頓與畫面震動

讓那一擊,停留片刻。

把停頓從 4f 改成 0f。在加上畫面震動之前,先親手感受接觸時的「停頓」改變了什麼。

實驗 01 — 比較打擊感 60 Hz
基準 0f
不停頓,直接穿過。
你的設定 4f · 66.7ms
停頓中
接觸時停頓的長度
27 / 89f

先播放一次。再從 4f 切換到 0f,重播一遍。那短暫的「停頓」,讓打擊的辨識度有什麼不同?

靈感 我們記下的靈感來源WIP: @LivingWorldProj ↗ 原始貼文待確認

在接觸的瞬間,讓眼睛跟上。

一擊太快的時候,你看得到動作,卻可能錯過「打中的那一瞬間」。打擊停頓,就是在那一瞬間製造短暫停頓的手法。 在這個實驗裡,攻擊方與目標會在接觸時短暫維持姿勢,接著目標才開始移動。

請先用 4f 播放,再換成 0f。這個 demo 的模擬是 60 Hz,兩者只差約 67 毫秒。盯著目標看,是不是更容易抓到打中的瞬間?

這是讓你拿回自己遊戲裡驗證的起點,而不是萬用公式。連續攻擊、沉重的一揮、從遠處觀看的戰鬥,同樣長度的停頓,扮演的角色也各不相同。

4格影格的內容 / 60 Hz
26f 接觸前
27f 接觸
28f 停頓
29f 停頓
30f 停頓
31f 恢復
27、28、29、30f。要數的就是這4格。到了31f,畫面已經在動了。4 ÷ 60秒 ≈ 66.7ms。

停住動作。晃動視角。

打開 畫面震動,再把打擊停頓設為 0f。視角會動,但角色不會停在接觸姿勢上。接著改成 4f,把兩者疊在一起試試看。

這兩種效果,作用的對象不一樣。

  • 打擊停頓改變的是動作的時機。 這個 demo 讓兩個角色同時停住,但依遊戲設計,也可以只停住部分對象。
  • 畫面震動改變的是視角。 這個 demo 的震動會在 12 個影格(60 Hz 下為 200ms)內逐漸衰減。即使角色停住,震動仍會繼續。

把震動加大,不一定能彌補接觸姿勢不夠清楚的問題。如果打擊感難以辨識,請先把兩者都關掉,重新檢視剪影、距離與時機。

把「4 影格」數清楚。

接觸從 第 27f 開始。設停頓長度為 S 影格,停住的區間就是 27 ≤ frame < 27 + S。4f 設定下,第 31f 已經在移動;0f 設定下,目標從第 27f 就開始移動。

這個 demo 畫出的是每一步更新之後的狀態。在 0f 時,接觸判定與第一次移動發生在同一步,所以會出現衝擊記號,但不會畫出停在接觸狀態的姿勢。「4f」包含接觸那一步本身,並不是在接觸那一格之後再多加 4 格。

用滑桿和 ±1f 按鈕,就能在不播放動畫的情況下確認邊界。播放以每步 1/60 秒的固定步長推進,所以就算是 120 Hz 的螢幕,動作也不會變成兩倍速。¼ 倍速只改變播放速度,不改變一個模擬影格的意義。

畫面震動也不是每次都取新的亂數,而是用整數雜湊重現相同的值。回到同一個影格,就會回到同一個畫面。震動幅度以圖中的世界座標定義,因此在螢幕上的大小會跟著圖一起縮放。

在自己的遊戲裡,試驗的順序。

  1. 先關掉畫面震動,確認只靠接觸姿勢能不能看出打中。
  2. 標明模擬的更新頻率,其他條件不變,比較 0f、2f、4f。
  3. 同時觀察打中的瞬間與恢復移動之後。太強烈的重音,也可能打亂操作的節奏。
  4. 有需要的話,再加一點視角震動,程度以讓動作更好讀為限。
  5. 在連續攻擊、畫面邊緣與減少動態效果的設定下,也確認一次。

要問的不是「怎樣才能更華麗?」,而是「希望玩家注意到什麼?」。

以下是不依賴特定引擎的虛擬碼。請限定要停住的對象,輸入、UI 與特效則使用各自適合的時鐘。這不是在特定引擎上驗證過的實作範例。

on_contact:
  held_steps = chosen_hit_stop_frames
  shake_steps = 12

each_fixed_step:
  # Contact is resolved before this step's hold decision.
  if held_steps > 0:
    held_steps -= 1
  else:
    advance_affected_actors()
  if shake_steps > 0:
    draw_camera_offset(shake_steps)
    shake_steps -= 1
  else:
    clear_camera_offset()

碰撞判定與更新處理的順序,會影響結果。除了計時器或停頓旗標,也請測試接觸時與恢復時實際畫出來的姿勢。

已知的依據,與尚未確定的事。

關於原始貼文
這是編輯資料中記錄的貼文連結。原始 WIP 尚未經過獨立查證,因此我們不對作者的實作方式做任何陳述。
實驗條件
本站 demo,固定 60 Hz 模擬。接觸發生在第 27f。4f 設定下維持第 27~30f 的姿勢,第 31f 恢復移動。畫面震動持續 12 個模擬影格。
致謝
@LivingWorldProj ↗ — 編輯資料中記錄的靈感來源。本站未引用文字,也未轉載任何媒體。

如需更正錯誤、變更或移除致謝,請透過 @FableQuest 私訊 聯絡我們。若無法私訊,請在公開貼文中標記我們。 更正紀錄