Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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 玩家未正确碰撞墙壁 如果(x>=Window.WIDTH-WIDTH/2) { velX=-velX; x=窗宽-窗宽; System.out.println(“x:+x”); System.out.println(“y:+y”); } 如果(x_Java_2d Games - Fatal编程技术网

Java 玩家未正确碰撞墙壁 如果(x>=Window.WIDTH-WIDTH/2) { velX=-velX; x=窗宽-窗宽; System.out.println(“x:+x”); System.out.println(“y:+y”); } 如果(x

Java 玩家未正确碰撞墙壁 如果(x>=Window.WIDTH-WIDTH/2) { velX=-velX; x=窗宽-窗宽; System.out.println(“x:+x”); System.out.println(“y:+y”); } 如果(x,java,2d-games,Java,2d Games,假设x和y是对象精灵的左上角,并且宽度和高度是其各自的尺寸,您可以尝试: if(x>=Window.WIDTH-WIDTH/2) { velX=-velX; x=Window.WIDTH-WIDTH; System.out.println("x: "+x); System.out.println("y: "+y); } if(x<0 + WIDTH/2||x<0-WIDTH/2){//good works x=0+WIDTH/2;

假设
x
y
是对象精灵的左上角,并且
宽度
高度
是其各自的尺寸,您可以尝试:

if(x>=Window.WIDTH-WIDTH/2)
{ 
    velX=-velX;
    x=Window.WIDTH-WIDTH;
    System.out.println("x: "+x);
    System.out.println("y: "+y);

}
if(x<0 + WIDTH/2||x<0-WIDTH/2){//good works
    x=0+WIDTH/2;
    velX=-velX;
    System.out.println("x: "+x);
    System.out.println("y: "+y);
}
else{
    x+=velX;
}
if(y>=Window.HIEGHT-HIEGHT){
    y=Window.HIEGHT-HIEGHT;
    velY=-velY;
    System.out.println("hit");
    System.out.println("x: "+x);
    System.out.println("y: "+y);
}
if(y<0 + HIEGHT/2){//good math works
    y=0+HIEGHT/2;velY=-velY;
    System.out.println("x: "+x);
    System.out.println("y: "+y);
}
else{y+=velY;}

if(x>=窗宽.x=x.=窗口高度.y,你好像不考虑玩家精灵的大小。如果你想检测一个像素的碰撞,这应该起作用。但是如果玩家实际测量出100个像素和100个像素那么高呢?那么你需要考虑一下你在哪里?t碰撞检测到ocur,即在玩家精灵的边缘、中心等处。不,它在“最大值”上保持不变x和y边。这会导致在0 x上跳过,易建联假设x和y在你的精灵的中心,不是吗?我想知道为什么了。这里看一下我在x,y周围画一个方框的情况。蓝色的东西是我在10×10平方米的空间里画x和y的地方。这是一个坐标系的gif,嗯……就像(x,y)坐标不在精灵的中心,可能在左上角…你能提供一个完整的例子吗?这是我之前的回答
if(x >= Window.WIDTH - WIDTH || x <= 0) {
    velX = -velX;
    System.out.println("hit at: (x,y): " + x + "," + y);
} 
x+=velX;

if(y >= Window.HEIGHT - HEIGHT || y <= 0){
    velY = -velY;
    System.out.println("hit at: (x,y): " + x + "," + y);
}
y+=velY;