Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity 更改实体相交时的状态_Entity_State_Lwjgl_Intersection - Fatal编程技术网

Entity 更改实体相交时的状态

Entity 更改实体相交时的状态,entity,state,lwjgl,intersection,Entity,State,Lwjgl,Intersection,我正在制作一个迷宫,玩家必须用鼠标导航,但当鼠标撞到墙上时,他们就输了。我想确保玩家将鼠标放在正确的开始位置,所以当鼠标与屏幕上的方形指示器相交时,我尝试切换到游戏状态 在我学习的教程中,他们做到了: public static class Point extends AbstractEntity { public Point(double x, double y, double width, double height) { super(x, y, width, he

我正在制作一个迷宫,玩家必须用鼠标导航,但当鼠标撞到墙上时,他们就输了。我想确保玩家将鼠标放在正确的开始位置,所以当鼠标与屏幕上的方形指示器相交时,我尝试切换到游戏状态

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

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;

我得到错误,“点不能解析为变量”。请提供帮助。

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

为了让您的示例发挥作用,我要么删除Maze1.intersects上的参数,让它直接访问Point类,要么将Point更改为不再是静态的,声明Point的实例并将该实例传递到Maze1.intersect

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


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

很乐意提供帮助。这解决了问题吗?如果是,那么请标记为答案。