MMMHUHU
2018-08-13 14:14:26
如題,小弟做了一個(gè)canvas動(dòng)畫,模仿以前那種屏保常見的氣泡,我想實(shí)現(xiàn)氣泡與氣泡之間的合理碰撞。請(qǐng)大大們給出一些思路,謝謝。做了一些嘗試。在每一幀碰撞的時(shí)候去檢測(cè)當(dāng)前氣泡與其他所有氣泡的是否發(fā)生碰撞,如果是,就反轉(zhuǎn)它們當(dāng)前的運(yùn)動(dòng)方向。失敗
1 回答

紫衣仙女
TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
提供一個(gè)思路,
1.將場(chǎng)景切分成多個(gè)區(qū)域,比如四個(gè)矩形
2.每個(gè)區(qū)域維護(hù)一個(gè)數(shù)組cirs,數(shù)組內(nèi)放的是在當(dāng)前部分的圓的圓心坐標(biāo)(即使坐標(biāo)不在該區(qū)域內(nèi),而是部分圓在)
3.每個(gè)圓有一個(gè)區(qū)域列表areas,存放當(dāng)前圓所在區(qū)域(列表的原因是,圓有可能會(huì)在區(qū)域交接處)
4.判斷時(shí),根據(jù)圓的區(qū)域列表areas,遍歷區(qū)域列表cirs,判斷所存在半徑內(nèi)有沒有與該圓相交的圓,即是cirs里面的圓心x1,y1,半徑r1與當(dāng)前圓x,y,r是否滿足 (x1 - x)^2 + (y1 - y)^2 <= (r1+r)^2。滿足就是相撞
添加回答
舉報(bào)
0/150
提交
取消