Re: [請益] 下落式節奏遊戲的變速效果
※ 引述《joe820730 (Let it go)》之銘言:
: =============================
: 先說明一下,打擊點(下稱Note)的資料結構大概是這樣:
: 每個小節之間用Linked list串起來,小節裡面再用一個Linked list將Note串起來
: | 小節 | -> | 小節 | -> | 小節 |
: | O -> O -> O | | O -> O -> O | | O -> O -> O |
: 上面每個O代表一個Note,用 -> 來代表資料之間用Linked list串聯
: 每個Note都是一個Struct,主要內容是該Note應該出現的時間(下面用NT代稱),
: 以及該Note現在在螢幕上的位置(NPOS)
: Note在螢幕的位置則是用音樂播放時間(下面用CT代稱)來計算
: 然後因為設計上會有Note流速的變化,因此還有一個速度參數(SPEED)
: 所以Note位置的計算公式會是NPOS = (NT-CT) * X * SPEED
: 其中X為一個常數,用來控制Note的基礎流速(或稱為1倍速)
: ========================
純提供想法,以你的原方法來擴展的話:
因為你的方法是直接給定note的位置函數,所以不用想怎麼"突然改變note的速度"
任何改變都會直接讓note飄移,視覺上不可行的
用函數角度來想的話,這個就只是個斜率為X*Speed的直線
所以也不可能讓你的Speed=0,那只會直接讓note停在你的判定點上不動
那變速這件事情就只能建立在這個函數本身才行
因為NPOS就是NT與CT的位置差,我們可以把原式換成這樣:
Pos(t) = t * X * SPEED
NPOS = Pos(NT) - Pos(CT)
接著來做整體流速改變:
舉例來說在t=0.5前速度為1,之後速度為2
那就把Pos函數改成
Pos(t) = min(0.5, t) * X * 1 + max(0, t - 0.5) * X * 2
也就是t小於0.5以前的斜率為X*1,之後的斜率為X*2
NPOS算法一樣,就能得到變速效果,停止、倒退效果也同理
Pos(t)的函數用程式寫起來更容易,要處理N個變速點也應該不難
不過還沒驗證過 單純討論想法看看
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.192.70 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1627397761.A.7C9.html
※ 編輯: aegis123321 (114.32.192.70 臺灣), 07/27/2021 22:57:41
推
07/28 20:38,
3年前
, 1F
07/28 20:38, 1F
推
07/29 01:02,
3年前
, 2F
07/29 01:02, 2F
→
07/29 01:03,
3年前
, 3F
07/29 01:03, 3F
→
07/29 01:05,
3年前
, 4F
07/29 01:05, 4F
推
07/29 01:09,
3年前
, 5F
07/29 01:09, 5F
→
07/29 01:11,
3年前
, 6F
07/29 01:11, 6F
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章