实体相交时改变状态

时间:2013-06-16 01:08:59

标签: entity state lwjgl intersection

我正在制作迷宫,玩家必须使用鼠标导航,但是当击中墙壁时它们会丢失。我想确保玩家在正确的位置开始使用鼠标,所以当鼠标与屏幕上的方形指示器相交时,我会尝试切换到游戏状态。

在我学习的教程中,他们做到了这一点:

public static class Point extends AbstractEntity {

    public Point(double x, double y, double width, double height) {
        super(x, y, width, height);
    }

    @Override
    public void draw() {
        glBegin(GL_POINTS);
            glVertex2d(x, y);

    }

    @Override
    public void update(int delta) {
        // Blank

    }
}

Point.setLocation(Mouse.getX(), 480 - Mouse.getY() - 1);

if(Maze1.intersects(Point)){
System.out.println("You would have lost");
}

我试着这样做:

case MAZE:
   if(Maze1.intersects (Point) ){
   state = State.GAMEOVER;
   }
   break;

我收到错误,“Point无法解析为变量”。请帮忙。

1 个答案:

答案 0 :(得分:0)

看起来当你调用Maze1.intersects时,你传递的是实际的Point类而不是该类的实例。这就是为什么你得到“Point无法解析为变量”的错误。您需要创建Point实例,在该实例上调用setLocation,然后将其传递给Maze1.intersects。

为了让你的例子工作,我要么删除Maze1.intersects上的参数,让它直接访问Point类,或者将Point更改为不再是静态的,声明Point的实例并将该实例传递给Maze1.intersect。 / p>

将Point类声明为static并不意味着您可以将类传递给方法等,就像常规变量一样,因为它只是一种共享数据和行为的方式。另外,请记住,通过将Point声明为静态,您会说只有一个Point。

我可能会考虑删除static关键字并创建Point类“startingPoint”的实例。然后,您可以将其传递给Maze1.intersects。然后,如果您需要确定玩家是否与迷宫中的其他“点”相交,那么您可以创建其他实例来表示这些点。