導航:首頁 > 編程語言 > java碰撞檢測

java碰撞檢測

發布時間:2023-06-08 21:45:34

『壹』 java判斷飛行物之間碰撞有幾種方法可以

這屬於碰撞檢測問題。
1、簡單的2D的物體:
物體形狀一般可以設定為矩形區域,這版類規則圖形。它的權碰撞檢測可以通過java API中的
Rectangle類來實現碰撞的檢測。
2、復雜點的:像素級別的碰撞檢測
像素級別的碰撞檢測算得上是最精確的碰撞檢測方法了。
首先遍歷算出一張點陣圖所有的像素點坐標,然後與另外一張點陣圖上的所有點坐標進行對比,
一旦有一個像素點的坐標相同,就立刻取出這兩個坐標相同的像素點,通過位運算取出這兩個
像素點的最高位(透明度)進行對比,如果兩個像素點都是非透明像素則判定這兩張點陣圖發生
碰撞。

『貳』 Java像素碰撞檢測原理

Java像素碰撞檢測原理大體分為基於屏幕像素顏色檢測,當移動的目標坐標像素的顏色與目標顏色相同時為發生碰撞。坐標檢測,就是維持各感興趣物體的坐標數據,判斷二者坐標相同時為發生碰撞。可以使用ActionScript3.0自帶bitmapdata功能對像素級碰撞檢測:

package
{
importflash.display.Bitmap;
importflash.display.BitmapData;
importflash.display.Shape;
importflash.display.Sprite;
importflash.display.StageAlign;
importflash.display.StageScaleMode;
importflash.events.Event;
importflash.events.MouseEvent;
importflash.filters.GlowFilter;
importflash.geom.Matrix;
importflash.geom.Point;

[SWF(width="1000",height="600")]

{
privatevarbd1:Bitmap;
privatevarbd2:Bitmap;

publicfunctionBitbdhitest()
{
super();
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
init();
}

privatefunctioninit():void
{
varbdp1:BitmapData=newBitmapData(100,100,true,0);
bdp1.draw(getstar(50),newMatrix(1,0,0,1,50,50));

bd1=newBitmap(bdp1);
bd1.x=200;
bd1.y=200;
this.addChild(bd1);

varbdp2:BitmapData=newBitmapData(100,100,true,0);
bdp2.draw(getstar(50),newMatrix(1,0,0,1,50,50));

bd2=newBitmap(bdp2);
this.addChild(bd2);

this.addEventListener(Event.ENTER_FRAME,onMouseMove)
}

privatefunctiononMouseMove(e:Event):void
{
bd2.x=mouseX-50;
bd2.y=mouseY-50;

if(bd1.bitmapData.hitTest(newPoint(bd1.x,bd1.y),1,bd2.bitmapData,newPoint(bd2.x,bd2.y),255))
{
bd1.filters=[newGlowFilter];
bd2.filters=[newGlowFilter];
}
else
{
bd1.filters=[];
bd2.filters=[];
}

}
privatefunctiongetstar(_r:Number):Sprite
{
var_star:Sprite=newSprite;
_star.graphics.lineStyle(0);
_star.graphics.moveTo(_r,0);

for(vari:int=1;i<11;i++)
{
varr2:Number=_r;

if(i%2>0)
{
r2=_r/2;
}

varangle:Number=Math.PI*2/10*i;
_star.graphics.lineTo(Math.cos(angle)*r2,Math.sin(angle)*r2);
}
return_star;
}

}
}

『叄』 在java編寫坦克大戰游戲時,如何判斷兩輛坦克不能重疊運動,有什麼簡單的演算法

對於這個小游裡面的類的抽象很重要,對坦克及其它類我在這裡面就不定義了,其實J2SE的API裡面就有關於圖形重疊的演算法,就是這個intersects()方法,具體偽代碼如下:
public boolean collidesWithTanks(java.util.List<Tank> tanks) {
for(int i=0; i<tanks.size(); i++) {
Tank t = tanks.get(i);
if(this != t) {
if(this.live && t.isLive() && this.getRect().intersects(t.getRect())) {
this.stay();
t.stay();
return true;
}
}
}
return false;
}
您可以根據自己的實際需求來改寫,在我的網路文庫裡面有關於「坦克大戰」的所有代碼,如果有需要我可以把代碼發給你,可以通過網路HI聯系我。

『肆』 JAVA Swing寫了一個飛機大戰小游戲,可是遇到了不會寫碰撞檢測的問題

敵機和 本機都添加一個Rectangle對象 Rectangle的坐標隨自身移動 多線程檢測 敵機集合的Rectangle是否與本機相撞 檢測方法是檢測一個Rectangle的四個角是否與在一個Rectangle的域中 或者直接用Rectangle的contains(Rectangle r) 檢測兩個Rectangle是否相交

『伍』 Java中,如何實現碰撞檢測

通過三角函數可以算直線所佔用的矩形中的透明像素,判斷兩者是否碰撞的時候算一下是不是非透明像素碰撞就行了

『陸』 這個用 「java條件語句」該怎麼寫

給個最簡單的碰撞檢測你:
public Rectangle getRect() {
return new Rectangle(x, y, w, h);
}
public Rectangle getRect1() {
return new Rectangle(x1, y1, w1, h1);
}
if (this.getRect().intersects(this.getRect1())) { }

閱讀全文

與java碰撞檢測相關的資料

熱點內容
dede工具 瀏覽:507
5g網盟app怎麼下載 瀏覽:486
微信備份老是連接中斷 瀏覽:886
出台多少份文件 瀏覽:380
鞋子怎麼搭配衣服的app 瀏覽:755
文件名使用的通配符的符號是什麼 瀏覽:916
lol分卷文件損壞怎麼辦 瀏覽:276
6分管車螺紋怎麼編程 瀏覽:732
海口農商銀行信用卡app是什麼 瀏覽:770
win10任務欄文件夾我的電腦 瀏覽:14
安卓nba2k18 瀏覽:776
文件夾密碼怎麼修改密碼 瀏覽:271
蘋果數據中心用什麼伺服器 瀏覽:769
省內圓通快遞寄文件夾需要多少錢 瀏覽:740
iphone程序加密 瀏覽:884
win10文件夾調整文件行高 瀏覽:681
創意手繪教程 瀏覽:754
微信刪除帳號信息 瀏覽:596
mysql操作類文件 瀏覽:649
繞過xp密碼 瀏覽:158

友情鏈接