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