cocos2d滑動碰撞檢測的實現

2021-06-27 18:18:04 字數 821 閱讀 4578

最近在做乙個類似切水果的小遊戲,需要檢測手在螢幕上是否劃到了園形的精靈。

對於圓形的碰撞檢測還是很容易的:當觸點到圓心的距離小於等於圓的半徑時,結果為真。

void mgame::cctouchmoved(cctouch *ptouch, ccevent *pevent)

//當觸點到圓心的距離小於等於圓的半徑時,結果為真

}

在測試的時候發現,如果滑動速度很快時,會出現手明明劃到了物體但檢測結果為false的情況。實際上,上面的方法只考慮了靜態情況下的碰撞檢測。對於運動的物體,如果還按照靜態的方法去檢測,就會出錯。這是因為快速移動的物體(這裡是手的觸點)在幀與幀之間又移動了一段距離,這段移動是不會進行碰撞檢測的。

細小的物體快速移動時,其路徑可能會在碰撞世界的連續快照中留下空隙,從而錯過碰撞。《遊戲引擎架構》在12.3.5.7介紹了運動物體的碰撞檢測,稱這種現象為」tunneling「或"bullet through *****"。
所以,改進的方法是判斷球心到前一次觸點和本次觸控點形成的線段的距離。

《Cocos2D權威指南》 2 4 碰撞檢測

很快大家就會發現,射出的子彈和敵機都是 擦肩而過 毫無威力,這顯然不合邏輯。這裡我們介紹cocos2d裡常用的碰撞檢測方法,用於檢測遊戲物件之間的碰撞。雖然這種碰撞比較簡單,檢測精度也不是很高,但是對於一般遊戲來說已經足夠了。在介紹實際的碰撞檢測方法之前,我們需要乙個輔助方法,根據精靈當前的位置算出...

cocos2dx碰撞檢測實現

在此場景中,我們假設有很多敵人和子彈,其中子彈可以擊中敵人,並且碰撞後子彈和敵人都會隨之消失。首先,我們需要去追蹤這些敵人和子彈。我們可以為這兩種物體新增tag,在這裡我們給敵人新增tag 1,給子彈新增tag 2,因為ccsprite繼承自ccnode,因為已經有了settag和gettag方法 ...

cocos2d Js 各類碰撞檢測

這裡總結一下點 圓 矩形之間的簡單碰撞檢測演算法 矩形不包括旋轉狀態 點和圓的碰撞檢測 1.計算點和圓心的距離 2.判斷點與圓心的距離是否小於圓的半徑 iscollision function point,circle else 點和矩形的碰撞檢測 1.獲取矩形的左上角座標p1和右下角座標p2 2....