看板 GameDesign 關於我們 聯絡資訊
※ 引述《ddavid (星舞絃獨角獸神話憶)》之銘言: : ※ 引述《etrexetrex (ETREX)》之銘言: : : 這樣會有另一個問題 : : 我先只講Y : : dy是Y的速度 : : 主時間軸 : : { : : 計算dy; : : if(落地) : : dy=0; : : y+=dy; : : } : : 問題是當地面平坦時 : : 落地之後即使按↑鍵去影響dy : : dy還是會被歸零 : : 因為他在移動之前是接觸著地面的狀態 : : 囧 : : 這讓我不曉得怎麼作跳躍的功能 : 直接歸零太特例化了吧?應該是在接觸時,給予一個反作用力。比如: : ○ : ↓ 2 : ─────────── : ↑ 2 : 撞擊時,地面送回一個同樣是2的反作用力,但因為視為人體由骨骼肌肉吸收掉 : 所以不會彈起,也只有這時候會發生那個反作用力。但你按上時,你並沒有對地面施 : 以正向力(就人體跳躍機制當然是有,先不管那麼多),所以並沒有產生什麼該被吸 : 收掉的反作用力,不應該歸零。簡單的說,就是在對地面有施與正向力時,才針對該 : 反作用力歸零。又比如斜面時: : / 2^(1/2) : 2 / / : / ─→ 2 : ○→/ \ : / 2^(1/2) : / : / : 只有朝右下方的分力對於地面是正向力,所以會給回一個往左上的2^(1/2)力量 : ,也只有這個力是被人體吸收掉歸零的,而往右上的力保持使得出現爬上斜坡的情況 : 。而腳不會打滑是因為地心引力持續作用所以正向力一直會有,也就有磨擦力。爬到 : 越陡之處,對地面的正向力分量就越小,磨擦力越來越不足而被地心引力往左下的分 : 量打敗所以才會滑下來。 : 看要做到多細就把整個機制的越多東西省略這樣,反之影響較小或遊戲設定不需 : 要的東西就不鳥或省略掉就好了。 現在演算法知道了 但是有一個很大的問題就是如何判斷撞擊的角度是多少? 在FLASH裡面有個 MC.HitTest(X,Y) 的函數 可以判斷MC是否碰觸到(X,Y) 函數的結果是布林值 (true or false) 我只想到一個很蠢的方法 就是用一個回圈去計算球的圓周軌跡(X,Y) 然後每一個影格都去判斷 MAP是否碰觸到 軌跡N個點 通常每秒30影格 若軌跡用360個點 每秒就要做30*360次的IF判斷 但是這應該是很浪費CPU的做法 請問用什麼方法才可以有效的計算出撞擊時的角度(地面凹凸不平時) -- 無名網誌:http://www.wretch.cc/blog/et284vu065k3 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.125.108