「java简单碰撞检测」编程碰撞检测
今天给各位分享java简单碰撞检测的知识,其中也会对编程碰撞检测进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java像素碰撞检测原理?
- 2、Java中,如何实现碰撞检测?
- 3、在java编写坦克大战游戏时,如何判断两辆坦克不能重叠运动,有什么简单的算法
- 4、这个用 “java条件语句”该怎么写?
- 5、Java碰撞检测代码无法执行
Java像素碰撞检测原理?
Java像素碰撞检测原理大体分为基于屏幕像素颜色检测,当移动的目标坐标像素的颜色与目标颜色相同时为发生碰撞。坐标检测,就是维持各感兴趣物体的坐标数据,判断二者坐标相同时为发生碰撞。可以使用ActionScript3.0自带bitmapdata功能对像素级碰撞检测:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Shape;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
import flash.geom.Matrix;
import flash.geom.Point;
[SWF(width="1000",height="600")]
public class Bitbdhitest extends Sprite
{
private var bd1:Bitmap;
private var bd2:Bitmap;
public function Bitbdhitest()
{
super();
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
init();
}
private function init():void
{
var bdp1:BitmapData=new BitmapData(100,100,true,0);
bdp1.draw(getstar(50),new Matrix(1,0,0,1,50,50));
bd1=new Bitmap(bdp1);
bd1.x=200;
bd1.y=200;
this.addChild(bd1);
var bdp2:BitmapData=new BitmapData(100,100,true,0);
bdp2.draw(getstar(50),new Matrix(1,0,0,1,50,50));
bd2=new Bitmap(bdp2);
this.addChild(bd2);
this.addEventListener(Event.ENTER_FRAME,onMouseMove)
}
private function onMouseMove(e:Event):void
{
bd2.x=mouseX-50;
bd2.y=mouseY-50;
if(bd1.bitmapData.hitTest(new Point(bd1.x,bd1.y),1,bd2.bitmapData,new Point(bd2.x,bd2.y),255))
{
bd1.filters=[new GlowFilter];
bd2.filters=[new GlowFilter];
}
else
{
bd1.filters=[];
bd2.filters=[];
}
}
private function getstar(_r:Number):Sprite
{
var _star:Sprite=new Sprite;
_star.graphics.lineStyle(0);
_star.graphics.moveTo(_r,0);
for(var i:int=1;i11;i++)
{
var r2:Number=_r;
if(i%20)
{
r2=_r/2;
}
var angle:Number=Math.PI*2/10*i;
_star.graphics.lineTo(Math.cos(angle)*r2,Math.sin(angle)*r2);
}
return _star;
}
}
}
Java中,如何实现碰撞检测?
通过三角函数可以算直线所占用的矩形中的透明像素,判断两者是否碰撞的时候算一下是不是非透明像素碰撞就行了
在java编写坦克大战游戏时,如何判断两辆坦克不能重叠运动,有什么简单的算法
对于这个小游里面的类的抽象很重要,对坦克及其它类我在这里面就不定义了,其实J2SE的API里面就有关于图形重叠的算法,就是这个intersects()方法,具体伪代码如下:
public boolean collidesWithTanks(java.util.ListTank tanks) {
for(int i=0; itanks.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条件语句”该怎么写?
给个最简单的碰撞检测你:
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碰撞检测代码无法执行
下面那个方法是想返回什么?如果是当前Tank与其他任意Tank有碰撞就返回
,可以写成
public boolean collidesWithTanks (ListTank tanks) {
tanks.remove(this);//这里删除当前对象,下面就不用老判断了
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;
}
java简单碰撞检测的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于编程碰撞检测、java简单碰撞检测的信息别忘了在本站进行查找喔。
发布于:2022-12-01,除非注明,否则均为
原创文章,转载请注明出处。