看板 GameDesign 關於我們 聯絡資訊
※ 引述《F23ko (純潔)》之銘言: : 就是高中物理常算的題目 : 可是要寫成程式.... : 覺得好難 orz.... : 二為彈性碰撞的解法很簡單 : 就只要把兩物體的速度,對中心點連線以及垂直方向做投影 : 然後把中心點連線上的投影互相交換,就是答案了 : 我在高中就這樣算,也沒覺得特別難或是複雜..... : 但是要寫成程式碼就覺得很困難..... 這是因為你是用解題的想法來寫程式. 這碰撞問題我會這樣解. 已知每個畫格(frame)兩物件的位置與速度. 兩物體碰撞之時.(碰撞很簡單就每個畫格檢查兩物體距離) 兩物體連線即為你要的投影向量(垂直就是碰撞面). 然後再依照速度與碰撞面.各算出反彈的速度.完畢. 一個物理基底類別(群)在引擎中是必要的. 光一個Vec3就可以玩到十幾二十個member function 更不用說Line , Plane , Box. 說實話很有趣.而且算離散幾何有很多撇步. 但是我已經不建議各位再打造自己的物理基底 (我比較喜歡叫這是 Geometry Primitive ) 有興趣就直接參考OGRE的Vector3 http://www.ogre3d.org/docs/api/html/classOgre_1_1Vector3.html 算是很好用的一個類別了. 延伸思考 . 想一下 Point Vector Line Ray Segment 有什麼不一樣? . 承上題互相之間怎麼算碰撞? -- "May the Balance be with U"(願平衡與你同在) 視窗介面遊戲設計教學,討論,分享。歡迎來信。 視窗程式設計(Windows CLR Form)遊戲架構設計(Game Application Framework) 遊戲工具設計(Game App. Tool Design ) 電腦圖學架構及研究(Computer Graphics) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.136.93