作者linjack (嗯)
看板GameDesign
標題Re: [問題]音速小子的行為模式
時間Mon Jun 5 01:38:16 2006
※ 引述《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