Ⅰ c++ 游戲碰撞檢測怎麼做
在游戲開發中,經常需要進行碰撞檢測演算法的實現,例如判斷前面是否有障礙以及判斷子彈是否擊中飛機,都是檢測兩個物體是否發生碰撞,然後根據檢測的結果通過碰撞檢測演算法做出不同的處理。
進行碰撞檢測演算法的物體可能有些的形狀和復雜,這些需要進行組合碰撞檢測,就是將復雜的物體處理成一個一個的基本形狀的組合,然後分別進行不同的檢測。
下面簡單介紹一下兩種最基本的形狀進行碰撞的時候進行的處理。
1、矩形和矩形進行碰撞檢測演算法
一般規則的物體碰撞都可以處理成矩形碰撞,實現的原理就是檢測兩個矩形是否重疊。我們假設矩形1的參數是:左上角的坐標是(x1,y1),寬度是w1,高度是h1;矩形2的參數是:左上角的坐標是(x2,y2),寬度是w2,高度是h2。
在檢測時,數學上可以處理成比較中心點的坐標在x和y方向上的距離和寬度的關系。即兩個矩形中心點在x方向的距離的絕對值小於等於矩形寬度和的二分之一,同時y方向的距離的絕對值小於等於矩形高度和的二分之一。下面是數學表達式:
x方向:| (x1 + w1 / 2) – (x2 + w2/2) | < |(w1 + w2) / 2|
y方向:| (y1 + h1 / 2) – (y2 + h2/2) | < |(h1 + h2) / 2|
在Java ME程序中,只需要將上面的條件轉換成代碼就可以實現了。
但是矩形碰撞只是一種比較粗糙的碰撞檢測演算法,因為很多實際的物體可能不是一個規則的矩形。
下面介紹一下圓形碰撞。
2、圓形和圓形的碰撞檢測演算法
圓形和圓形的碰撞應該說是一種最簡單的碰撞,因為在數學上對於兩個圓形是否發生重疊,有計算兩個圓心之間的距離的公式。那麼條件就變為:計算兩個圓心之間的距離是否小於兩個圓的半徑和。
假設圓形1的左上角坐標是(x1,y1),半徑是r1,圓形2的左上角的坐標是(x2,y2),半徑是r2。
因為MIDP1.0中沒有浮點數,而且浮點數的運算比較慢,所以我們將條件做一個簡單的變換:對於條件的兩邊都進行平方,這樣就去掉了開方的運算步驟。
下面是數學表達式:
(x1 – x2)2 + (y1 – y2)2 < (r1 + r2)2
在Java ME程序中,只需要將上面的條件轉換成代碼就可以了。
上面介紹的只是最基本的碰撞檢測演算法的實現,而實際的編程過程中遇到的碰撞檢測問題要比這些復雜很多,還需要其他形式的檢測,還需要進行更加深入的學習。
Ⅱ 如何用C#寫飛機大戰
頁面設計 (游戲風格,關卡設計)
渲染方式 (彈道走向,敵機走向,擊中特效,碰撞檢測,擊中血條扣減)
監聽按鍵 (控制飛機行駛方向,開炮按鍵)
游戲演算法 (控制整個游戲核心演算法,基於坐標方式判定子彈,飛機,碰撞等等)
以上是一些思路,具體實現還是需要自己研究,在CSDN上有源碼,可以學習借鑒下.
Ⅲ 請求cocos2dx簡單高效碰撞檢測的方法,不斷的在update中遍歷所有子彈和敵人感覺好低效。
可使用物理引擎來處理碰撞,官方的封裝,會比你的效率高
Ⅳ 我用c語言寫控制台坦克大戰,可是子彈發射這里不會了,我本來的想法是定時掃描然後畫出子彈,但結果失敗
我想看看你的代碼,
Ⅳ Flash怎麼實現檢測物體碰撞觸發事件
可以用hitTestObject 這個最簡單,是基於矩形的碰撞。
有剪輯a,b
你可以用a.hitTestObject(b)也可以用b.hitTestObject(a)判斷
-true 碰撞
-false 未碰撞
如果是多個碰撞多個 會很卡
如果是多個碰少個 比如是飛機和子彈 可以用子彈來檢測碰撞飛機!而不是用飛機來碰撞檢測子彈
Ⅵ c語言子彈擊中飛機後飛機消失的代碼怎麼寫
你不把代碼放上來, 誰知道怎麼寫, 如果是我寫的話, 會判斷碰撞後在飛機位置輸出空格
Ⅶ 請問用代碼寫碰撞檢測怎麼寫
可以用hitTestObject 這個最簡單,是基於矩形的碰撞。有剪輯a,b 你可以用a.hitTestObject(b)也可以用b.hitTestObject(a)判斷 -true 碰撞 -false 未碰撞如果是多個碰撞多個 會很卡如果是多個碰少個 比如是飛機和子彈 可以用子彈來檢測碰撞飛機!而不是用飛機來碰撞檢測子彈
Ⅷ 用C語言編寫了一個仿雷電游戲,可是為什麼子彈打中飛機時,飛機是消失咯,但會出現一個子彈代替飛機飛行
指針指向錯誤,在碰撞發生處理程序附近檢查下代碼,是否被指錯
Ⅸ c語言飛機游戲,如何實現飛機,敵人,子彈的同時運行,是不是要用到線程啊
1.在windows下輸入:CTRL+Z+Enter; 2.在Linux/Unix/Mac操作系統下輸入:CTRL+D+Enter。 EOF:計算機術語,縮寫通常為EOF(End Of File),在操作系統中表示資料源無更多的資料可讀齲資料源通常稱為檔案或串流。 參考代碼: #include#include#in...
Ⅹ c語言實現控制台飛機大戰游戲,有辦法使用一個函數實現按一下空格發一顆子彈
給子彈也弄個結構體,存儲pos,speed,length等信息,弄個更新(顯示)子彈的函數,在主循環里不斷調用這個函數