GameDesign 板


LINE

大家好 小弟正在使用Unity上進行2D動作遊戲開發 目前在角色的移動 跳躍之類的動作 都是透過計算速度並在update的時候更新 可是許多技能都帶有位移的效果 這些位移通常與物理系統並不相關 而且位置的變化需要與動畫保持一致 想請問這類型的移動是透過什麼方式去處理? 舉個例子: 像是昇龍拳 在使用的時候角色會向右上方 沿著類似指數函數的路徑移動 在這段時間所有移動都是固定的 並且與物理無關 技能結束後的下墜才會回到物理系統計算 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.122.77
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1542541506.A.B02.html
1F:→ dklassic: 不確定是不是常用的方法,不過我會用另一個 Game Object11/18 20:53
2F:→ dklassic: 當作玩家真正的位置,然後角色動畫只是一個跟著玩家位置11/18 20:53
3F:→ dklassic: 跑的另一個 Game Object11/18 20:53
不太能理解你的做法是要達到什麼效果... 一般在gameobject上放動畫不就是這樣了嗎? ※ 編輯: RoastSaury (101.8.214.130), 11/18/2018 21:40:21
4F:推 cjcat2266: 不同狀態下有個負責更新速度和位置的virtual function 11/18 23:34
5F:→ cjcat2266: (或用switch或其他方法達到等同效果),一般狀態下用速 11/18 23:34
6F:→ cjcat2266: 度更新位置,特殊狀態可以直接更新位置或對速度做客製 11/18 23:34
7F:→ cjcat2266: 化更新。另外,除非主打物理模擬且模擬浮動性可接受, 11/18 23:34
8F:→ cjcat2266: 負責不建議用泛用型物理引擎處理動作遊戲的核心機制, 11/18 23:34
9F:→ cjcat2266: 建議用客製特化碰撞偵測 11/18 23:34
10F:→ cjcat2266: 不同狀態中也可以做短時間animation blend,消除不想要 11/18 23:35
11F:→ cjcat2266: 的視覺不連續性 11/18 23:35
12F:→ dklassic: 等等,我也不知道我剛剛理解成什麼了 XD 如果是平地結構 11/19 00:23
13F:→ dklassic: 的話直接把下落動畫也一起做完,如果有著陸高度問題的 11/19 00:23
14F:→ dklassic: 話你直接寫個加速度公式把人往下移,然後偵測跟地面的碰 11/19 00:23
15F:→ dklassic: 撞就好了。物理引擎帶來的結果不好預期 11/19 00:23
看來我問題問的不夠好XD 我目前是自己使用物理公式以及客製碰撞 角色基本的移動 跳躍 以及對碰撞處理都OK了 Cj大的做法的話 和我預期的蠻接近的 只是若是要直接更新位置 勢必要紀錄每個時間點角色應該出現的座標 感覺會 很麻煩(吧) 客製速度也考慮過 但感覺位置不太容易受控制 於是才上來詢問有沒有更輕鬆一點的解法 另外 想請問最簡潔地取得當前animation的frame的方式是? 還是真的只能用animator.GetCurrentAnimatorStateInfo(0).normalizedTime? 這東西真的有夠醜的啦 ※ 編輯: RoastSaury (140.113.122.77), 11/19/2018 00:51:37
16F:推 wix3000: 自己寫一個 extension function啊y11/19 02:50
17F:→ wix3000: public static float NormalizedTime(this Animator ani)11/19 02:51
這樣也只是包起來而已吧? ※ 編輯: RoastSaury (140.113.122.75), 11/19/2018 04:24:15
18F:推 cjcat2266: 是包成比較好看的API沒錯啊,除非能更動Unity底層的ani 11/19 07:37
19F:→ cjcat2266: m資料儲存模式,那就只能靠重新包裝 11/19 07:37
20F:推 cjcat2266: 另外,勢必要紀錄角色位置的意思是?不論是數學式可以 11/19 07:40
21F:→ cjcat2266: 表的動態或對anim取樣,最少都只需要開始時間吧 11/19 07:40
22F:→ cjcat2266: 還有開始位置 11/19 07:45
23F:→ cjcat2266: 紀錄的意思是說製作客製取樣點函式嗎?那實質上應該可11/19 07:52
24F:→ cjcat2266: 以用播放特定anim來實作,這個特殊狀態就是一個特定ani11/19 07:52
25F:→ cjcat2266: m state這樣11/19 07:52
嗯我就是取樣的意思 我想到的另一個問題是 如果是類似這種取樣的方式去位移 移動時與地圖物件的互動可能會很差 (因為移動都寫死了)
26F:推 cjcat2266: 回頭一下,取frame的方式之所以是那樣,是因為Unity的11/19 08:01
27F:→ cjcat2266: 動畫系統是使用層式狀態機模型,用層式模型是為了支援a11/19 08:01
28F:→ cjcat2266: nim blending,為達到圓滑anim的必備模型,而用狀態機11/19 08:01
29F:→ cjcat2266: 則是泛用anim系統的常見選擇,我認為還算合理啦11/19 08:01
30F:推 juicefish: tween之類的東西?11/19 08:36
31F:推 cjcat2266: 推樓上,特殊狀態下也可用tween,如果是客製移動曲線,11/19 08:56
32F:→ cjcat2266: 也可override個客製tween11/19 08:56
Tween我還真的沒用過 來研究一下好了 ※ 編輯: RoastSaury (140.113.136.220), 11/19/2018 10:33:25
33F:推 cjcat2266: 會上面的推文回文,取樣其實不代表寫死位移,可以寫成11/19 12:27
34F:→ cjcat2266: 每次取樣時取相對位移來更新位置,同時對環境做互動11/19 12:27
我的認知是 因為移動不再是透過速度去更新 在遇到障礙物的時候很難透過改變位移量 去表現出「受到阻擋」的狀態 因為已經沒有移動的函數了 ※ 編輯: RoastSaury (101.9.160.213), 11/19/2018 15:03:25
35F:推 cjcat2266: 應該還是可行。如果障礙是剛體,那可以試試移除障礙接 11/19 15:27
36F:→ cjcat2266: 觸面法線方向的移動分量,然後依據要保留多少慣性而縮 11/19 15:27
37F:→ cjcat2266: 放接觸面切面分量,該比例也可以隨時間做圓滑處理,看11/19 15:27
38F:→ cjcat2266: 起來就不會突兀。如果是軟性障礙,那可以嘗試對位移量11/19 15:27
39F:→ cjcat2266: 做縮放,加上對碰撞面法線方向稍作偏移,製造出排斥力11/19 15:28
40F:→ cjcat2266: 的感覺。真要從速度下手,剛體障礙則用上述位移更新方11/19 15:28
41F:→ cjcat2266: 式去反推,軟體障礙就隨意囉11/19 15:28
42F:推 cjcat2266: 我有做過類似的效果,我覺得看起來還行。要點是其中會11/19 15:32
43F:→ cjcat2266: 牽扯到的比例參數,用了本身已是C1圓滑度的數值彈簧做11/19 15:32
44F:→ cjcat2266: 圓滑處理,就感覺蠻順暢的11/19 15:32
45F:推 wix3000: 沒有什麼問題是中介層解決不了的,如果有,就再包一層11/19 23:08
聽不太懂XD 先謝謝各位的回答 我目前先嘗試在不同時間點切換初速跟加速度看看 如果有問題再跟各位大大請教 謝謝~ ※ 編輯: RoastSaury (101.13.82.147), 11/20/2018 14:50:03
46F:推 NCTU87: 推烤魚 11/21 21:54
47F:推 j60708123: 是烤魚 11/21 21:58
48F:推 QQron: 寫一個StateMachineBehaviour,用normalizedTimed控制時間 11/26 01:20
49F:→ QQron: 這樣就很好對應動畫 至於移動方式很多種,不喜歡velocity 11/26 01:22
50F:→ QQron: 就直接修改animator.transform.position 11/26 01:22







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP