awt里有一個類 Rectangle, 它有一個方法public boolean intersects(Rectangle r) 可檢測物體碰撞.確定此 Rectangle 是否與指定 Rectangle 相交。如果兩個矩形的交集為非空,則它們是相交的。
在仁和等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),仁和網(wǎng)站建設(shè)費(fèi)用合理。
也就是說小車代表的矩形和護(hù)欄代表的矩形相交
這個是碰撞檢測算法。
簡單說,你繪制的對象,比如飛機(jī)A,子彈B,都是圖形,有大小、有形狀的,這個形狀的邊角都有坐標(biāo)點(diǎn)。
//B的矩形右側(cè)坐標(biāo)
B.RightX;
//A的矩形左側(cè)坐標(biāo)
A.LeftX;
假定它們圖形都是矩形,子彈B從左側(cè)向右側(cè)平移,與飛機(jī)A“碰撞”,碰撞的條件,可以認(rèn)為是子彈B的最右側(cè)坐標(biāo)大于等于飛機(jī)A的所在的左側(cè)坐標(biāo)。
if(B.RightX?=?A.LeftX)
游戲循環(huán)中不斷進(jìn)行這樣的檢測,一旦檢測到碰撞成立時就認(rèn)為是擊中了。
進(jìn)一步,并不是每個圖形都是規(guī)則的矩形或者圓形,這個時候,你就要為圖形自己定義一個碰撞檢測圖形(比如一個合適大小的圓形,大小剛好可以包裹你的對象)這個形狀的坐標(biāo)與對象運(yùn)動關(guān)聯(lián),同步改變。通過這個碰撞檢測的圖形的坐標(biāo)是否重合來判斷是否碰撞。
下面那個方法是想返回什么?如果是當(dāng)前Tank與其他任意Tank有碰撞就返回
,可以寫成
public boolean collidesWithTanks (ListTank tanks) {
tanks.remove(this);//這里刪除當(dāng)前對象,下面就不用老判斷了
for (int i = 0; i tanks.size(); i++) {
Tank tank =tanks.get(i);
//if (this != tank ) {
if(this.collidesWithTank(tank))
return true; //如果和任意一個有碰撞就返回true
}
return false;
}
新聞標(biāo)題:java矩形碰撞代碼 js 矩形碰撞
網(wǎng)站URL:http://chinadenli.net/article24/hgcjje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、微信小程序、網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)