3 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
首先要做的是檢測(cè)球與物體之間是否發(fā)生碰撞的實(shí)際功能。
為了性能起見(jiàn),實(shí)現(xiàn)一些粗略的碰撞檢測(cè)技術(shù)(例如,邊界矩形)以及在檢測(cè)到碰撞時(shí)需要更準(zhǔn)確的技術(shù)將是很好的,這樣您的功能可以更快地運(yùn)行但是使用完全相同的同樣的循環(huán)。
另一個(gè)有助于提高性能的選項(xiàng)是使用您擁有的對(duì)象進(jìn)行一些預(yù)處理。例如,您可以將整個(gè)區(qū)域分解為像通用表格一樣的單元格,并存儲(chǔ)特定單元格中包含的相應(yīng)對(duì)象。因此,要檢測(cè)碰撞,您將檢測(cè)球所占據(jù)的細(xì)胞,從這些細(xì)胞中獲取物體并使用碰撞檢測(cè)功能。
為了加快速度,你可以實(shí)現(xiàn)2d-tree,quadtree或R-tree。

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是一個(gè)非常簡(jiǎn)單的邊界矩形例程。該公司預(yù)計(jì)雙方a
并b
能與對(duì)象x
,y
,width
和height
屬性:
function?isCollide(a,?b)?{ ????return?!( ????????((a.y?+?a.height)?<?(b.y))?|| ????????(a.y?>?(b.y?+?b.height))?|| ????????((a.x?+?a.width)?<?b.x)?|| ????????(a.x?>?(b.x?+?b.width)) ????);}

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
你可以嘗試jquery-collision。完全披露:我剛剛寫(xiě)了這個(gè)并發(fā)布了它。沒(méi)有找到解決方案,所以我自己寫(xiě)了。
它允許你做:
var?hit_list?=?$("#ball").collision("#someobject0");
這將返回與“#ball”重疊的所有“#someobject0”。
添加回答
舉報(bào)