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