我正在使用Java制作游戏Breakout,我有一个小问题:
if(ballLocation.y >= 430){ //baseline
if((ballLocation.x >= batLocation.x) && (ballLocation.x <= (batLocation.x + width))){ //determining whether or not the ball is touching the bat by establishing a range of values
directionY = -2; //changing the direction of the ball so that it appears to be bouncing off when it hits the bat
}
}
如果我在蝙蝠的球上进一步向左击球,那么if语句是真的,但是由于某种原因,如果它进一步向右击中它是假的,即使我可以看到球击中击球。所以我认为唯一的问题可能是将width
变量添加到batLocation.x
,因为batLocation.x
是x
轴上的单位和{{{ 1}}是图像的宽度(因为蝙蝠和球都是png文件而不仅仅是游戏绘制的),以像素为单位(width
)。
所以我认为我的代码不起作用的最可能原因是因为我做了一个错误的假设并假设如果我将宽度(以像素为单位)添加到起始10
点,我会得到当{1}轴上可能有1个像素不等于1个单位时,球棒的长度。
情况如此吗? 1个像素在x或y轴方面不等于一个单位?如果不是,那么x
的单位数是多少,如果它的宽度是10像素,我的蝙蝠的宽度是多少?
我已经获得了JDK 8的最新版本。
答案 0 :(得分:0)
除了绘制时,它并不是内置的x和y轴,并且它总是以像素为单位。你有什么单位x和y?绘制时,您是否将这些值用作屏幕位置?如果是这样,请尝试RealSkeptic的建议;否则,单位是你定义的。