Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/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
为什么这个Java网格不能正常工作?_Java_Video_Grid_Game Engine - Fatal编程技术网

为什么这个Java网格不能正常工作?

为什么这个Java网格不能正常工作?,java,video,grid,game-engine,Java,Video,Grid,Game Engine,我正在尝试制作一个网格(代码最少),块可以捕捉到它。我想要的是当鼠标在网格正方形中时,块移动到该正方形。我所写的基本上是说,如果X或Y超出网格块乘以块的大小,则移动到下一个网格块。目前,这段代码创建了一个3x3的网格,尽管代码应该生成无限的网格空间。我无法将块移出这个3x3网格 public class Player extends Entity { public Player(double entSize, boolean collideA, boolean collideB, double

我正在尝试制作一个网格(代码最少),块可以捕捉到它。我想要的是当鼠标在网格正方形中时,块移动到该正方形。我所写的基本上是说,如果X或Y超出网格块乘以块的大小,则移动到下一个网格块。目前,这段代码创建了一个3x3的网格,尽管代码应该生成无限的网格空间。我无法将块移出这个3x3网格

public class Player extends Entity {
public Player(double entSize, boolean collideA, boolean collideB, double x, double y) {
    super(entSize, collideA, collideB, x, y);
}
public void init() {
    Texture texFile = loadTexture("stone");
    texture(false, true);
    texFile.bind();
    render();
}
void input() {
    int gridPosX = 1;
    int gridPosY = 1;
        if(getX() > gridPosX*entSize) {
            gridPosX += 1;
        } if(getX() < gridPosX*entSize) {
            gridPosX -= 1;
        } if(getY() > gridPosY*entSize) {
            gridPosY += 1;
        } if(getY() < gridPosY*entSize) {
            gridPosY -= 1;
        }
        this.x = gridPosX*entSize;
        this.y = gridPosY*entSize;
}
公共类播放器扩展实体{
公共播放器(双entSize、布尔碰撞A、布尔碰撞B、双x、双y){
超级(entSize,collideA,collideB,x,y);
}
公共void init(){
纹理纹理文件=加载纹理(“石头”);
纹理(假、真);
bind();
render();
}
无效输入(){
int-gridPosX=1;
int-gridPosY=1;
if(getX()>gridPosX*entSize){
gridPosX+=1;
}if(getX()gridPosY*entSize){
gridPosY+=1;
}if(getY()
}
X和Y值是定义块位置和形状参数的值。

通过使用for循环固定正栅格增量! 新代码:

public class Player extends Entity {
public Player(double entSize, boolean collideA, boolean collideB, double x, double y) {
    super(entSize, collideA, collideB, x, y);
}
public void init() {
    Texture texFile = loadTexture("stone");
    texture(false, true);
    texFile.bind();
    render();
}
void input() {
    int gridPosX = 0;
    int gridPosY = 0;
        for(gridPosX = 0; getX() > gridPosX*entSize; gridPosX++) {
            gridPosX += 0;
        } if(getX() < gridPosX*entSize) {
            gridPosX -= 1;
        } for(gridPosY = 0; getY() > gridPosY*entSize; gridPosY++) {
            gridPosY += 0;
        } if(getY() < gridPosY*entSize) {
            gridPosY -= 1;
        }
        this.x = gridPosX*entSize;
        this.y = gridPosY*entSize;
}
公共类播放器扩展实体{
公共播放器(双entSize、布尔碰撞A、布尔碰撞B、双x、双y){
超级(entSize,collideA,collideB,x,y);
}
公共void init(){
纹理纹理文件=加载纹理(“石头”);
纹理(假、真);
bind();
render();
}
无效输入(){
int gridPosX=0;
int-gridPosY=0;
对于(gridPosX=0;getX()>gridPosX*entSize;gridPosX++){
gridPosX+=0;
}if(getX()gridPosY*entSize;gridPosY++){
gridPosY+=0;
}if(getY()

}

您的意思是在检查下一个条件之前修改gridPosX吗?我想,如果你想改用else,你可能会考虑使用else。我想每次鼠标都更新gridPosX。getX()大于当前网格空间的最大X(gridSpace*entSize,因为它们是正方形)。这可能取决于你的实现,但由于gridPosX和Y总是初始化为1,它们只能从0到2变化,这可能会导致你的3x3问题我不知道。。。为什么这是他们的射程?更重要的是,如何增加该范围?我使用for循环成功地使gridsize无限大,但是块会跳跃两个空格,除非光标正好位于下一个空格的x/y线上。