我正在制作一个类似于Minecraft的2D平台游戏,其中包括一个移动块的玩家,但是玩家/块碰撞不起作用。 我试图做的几乎是与20 y 20的块碰撞我有一个数组列表 块:
公共区块[] [] =新区块[50] [50]
如何与每个块碰撞。
请参阅下面的Player
课程。如果您想查看Block
课程,请在评论中告诉我。
public class Player
{
public int x = 200;
public int y = 10;
public static int dir = 1;
public static int fallingSpeed = 4;
public static boolean col = false;
public Image img, img1;
public void tick()
{
collide();
if(col == false)
{
y += fallingspeed;
Comp.sy += fallingspeed;
}
}
public void collide()
{
if (x >= 0 && y >= 0 && x >= Comp.level.block.length
&& y >= Comp.level.block[0].length - 21)
col = true;
else
col = false;
}
public void render(Graphics g)
{
if(dir == 1)
{
ImageIcon i2 = new ImageIcon("res/player2.png");
img = i2.getImage();
g.drawImage(img, x - Comp.sx, y - Comp.sy, null);
}
else if (dir == 2)
{
ImageIcon i2 = new ImageIcon("res/player1.png");
img = i2.getImage();
g.drawImage(img, x - Comp.sx, y - Comp.sy, null);
}
}
}
答案 0 :(得分:0)
是的,我们需要Block类来做一个例子。
基本思想是你使用for循环迭代思考每个块并检查玩家是否与它发生碰撞。您可以使用Rectangle2D和Area类来帮助检测实际的碰撞,方法是将Rectange2D对象强制转换为Area对象并使用area1.intersects(area2)。