2d java minecraft游戏与块碰撞

时间:2013-11-17 17:59:52

标签: java

我正在制作一个类似于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);               
        }           
    }
}

1 个答案:

答案 0 :(得分:0)

是的,我们需要Block类来做一个例子。

基本思想是你使用for循环迭代思考每个块并检查玩家是否与它发生碰撞。您可以使用Rectangle2D和Area类来帮助检测实际的碰撞,方法是将Rectange2D对象强制转换为Area对象并使用area1.intersects(area2)。