cocos碰撞檢測

2021-07-10 18:42:23 字數 818 閱讀 3181

//

兩個矩形的碰撞檢測,主要看boundingbox是否接觸

rect rc1 =_spriteauto->getboundingbox();

rect rc2 =_spritectrl->getboundingbox();

if(rc1.intersectsrect(rc2))則認為碰撞

// 兩個圓的碰撞檢測,看圓心距離

point pt1 =_spriteauto->getposition();

point pt2 =_spritectrl->getposition();

rect rc1 =_spriteauto->getboundingbox();

rect rc2 =_spritectrl->getboundingbox();

float r2 = rc1.size.width/ 2 + rc2.size.width / 2;

float dist =pt2.getdistancesq(pt1);

if (dist < r2*r2)則認為碰撞

碰撞的高效演算法:將矩形分塊,只判定個塊的情況,要比整個的好一些(防止連續碰撞)。

總結:矩形和矩形(rect::intersectsrect(rect))

矩形和圓(rect::intersectscircle(vec2-圓心,float-半徑))

矩形和點(rect::containspoint(vec2))

點和圓:圓心半徑距離

圓和圓:圓心半徑是否小於半徑之和

線段:ccpsegmentintersect()引數是4個vec2,表示2個線段

碰撞檢測 膠囊體碰撞檢測

膠囊體 給定一條線段l,所有道l的距離為r的點的集合。由定義可知,膠囊體由半徑r和線段l標識。檢測兩個膠囊體是否發生碰撞,即檢測兩條線段l1 l2的最短距離d是否大於l1 l2的半徑r1 r2之和,d r1 r2 則未碰撞,否則發生碰撞。設線段l1端點為a1 a2,線段l2端點為b1 b2,號表示兩...

cocos2dx碰撞檢測實現

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

cocos2d Js 各類碰撞檢測

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