Java中两个图像之间的碰撞检测

我正在写的游戏中有两个角色,玩家和敌人。定义如下:

public void player(Graphics g) {

g.drawImage(plimg, x, y, this);

}

public void enemy(Graphics g) {

g.drawImage(enemy, 200, 200, this);

}

然后用:

player(g);

enemy(g);

我可以使用键盘来移动player(),但是在尝试检测两者之间的碰撞时我很茫然。很多人说过要使用Rectangles,但是作为一个初学者,我看不到如何将其链接到现有代码中。谁能为我提供一些建议?

回答:

我认为您的问题是您没有为球员和敌人使用好的OO设计。创建两个类:

public class Player

{

int X;

int Y;

int Width;

int Height;

// Getters and Setters

}

public class Enemy

{

int X;

int Y;

int Width;

int Height;

// Getters and Setters

}

您的播放器应具有X,Y,Width和Height变量。

您的敌人也应该如此。

在游戏循环中,执行以下操作(C#):

foreach (Enemy e in EnemyCollection)

{

Rectangle r = new Rectangle(e.X,e.Y,e.Width,e.Height);

Rectangle p = new Rectangle(player.X,player.Y,player.Width,player.Height);

// Assuming there is an intersect method, otherwise just handcompare the values

if (r.Intersects(p))

{

// A Collision!

// we know which enemy (e), so we can call e.DoCollision();

e.DoCollision();

}

}

为了加快速度,请不要费心检查敌人的坐标是否在屏幕外。

以上是 Java中两个图像之间的碰撞检测 的全部内容, 来源链接: utcz.com/qa/400834.html

回到顶部