看板 GameDesign 關於我們 聯絡資訊
※ 引述《etrexetrex (ETREX)》之銘言: : 現在演算法知道了 : 但是有一個很大的問題就是如何判斷撞擊的角度是多少? : 在FLASH裡面有個 MC.HitTest(X,Y) 的函數 如果要真的做一點有樣子的模擬, hitTest 最好不要用... : 請問用什麼方法才可以有效的計算出撞擊時的角度(地面凹凸不平時) 其實這在我給的那個遊戲「N」網頁上就有說明 http://www.harveycartel.org/metanet/tutorials/tutorialA.html 看一下上面講的 Separating Axis Theorem (SAT) 如果不嫌棄英文的話 應該不會難懂 上面用到的也只有國高中的向量. 對於移動物體來說, 重要的是他的位移、速度、加速度在 x y 方向上的分量 對於碰撞時的處理, 是看碰撞點的 切線單位向量 與 法線單位向量 如何 把移動物體上相關的向量對 切線單位向量 與 法線單位向量 做投影 然後在這兩個方向上做相關的處理動作 只是說你今天地面凹凸不平要精緻到何種程度 也是決定實作方法的一個重要關鍵 是要像前面那個囧Game那樣, 連字元符號的邊緣都要能抓出來嗎? 當然那就非常難了, 那個囧Game的判定問題很多 因為碰撞圖型的外型太過複雜 所以那個囧Game只能做到 抓出大概的外型 而且在判定上的錯誤就會多 但我想光是做到那種程度已經相當不錯了 另外就是像 N, N 這個遊戲就比較類似傳統的 Platformer 地形不外乎固定大小的圓、弧、斜面、方塊等湊起來的 由於在碰撞元件上做過相當程度的化簡 所以系統較容易設計 效率上也能選擇針對特定地形設計碰撞函數 來達到效率上的提升 而且在碰撞判定上可以做到相當高的準確度 所以我認為先選定想做到的效果 再選擇適當的手法 approach 會比較好 個人意見 僅供參考 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.72.57.78 ※ 編輯: linjack 來自: 203.72.57.78 (06/05 01:39) ※ 編輯: linjack 來自: 203.72.57.78 (06/05 01:48)
linjack:啊....不小心修掉誰的推文 @__@a 06/05 01:48
etrexetrex:是我的 囧GAME 我猜是用FLASH本身的HITTEST做的 06/05 18:20
etrexetrex:因為這個函式可以判斷一個不規則形狀是否碰觸到某個點 06/05 18:21
etrexetrex:囧球在被壓擠時會往上跑,我想這就是囧球可以爬45度坡 06/05 18:22
etrexetrex:的原因 06/05 18:23