我在两个游戏对象上使用了两个RectF,以检测它们之间的碰撞。
这是设置RectF的两行:
RectF playerRect = new RectF((x-0.1f), (y+0.1f), (x+0.1f), (y-0.1f));
RectF asteroidRect = new RectF((asteroidX-0.1f), (asteroidY+0.1f), (asteroidX+0.1f), (asteroidY-0.1f));
这是它们的碰撞检测:
if(playerRect.intersect(asteroidRect)) {
asteroidY = 1.15f;
asteroidX = randomAsteroidX / 100;
}
值x和y是玩家的x和y位置。小行星X和小行星Y的值是小行星的位置。据我了解,使用RectF应该使用我提供的值在播放器周围设置一个矩形,在宽度和高度0.2f的小行星周围设置一个矩形。但是,使用这些值,命中检测(相交)将不起作用。我将RectF设置错误吗?有任何想法吗?
最佳答案
根据https://developer.android.com/reference/android/graphics/RectF.html:
RectF(左浮动,顶部浮动,右浮动,底部浮动)
我可能是错的,因为我之前没有看到您是如何设置玩家和小行星的,但是似乎您误将其切换为
RectF(左浮动,下浮动,右浮动,上浮动)
如果是这种情况:
尝试切换到
RectF playerRect = new RectF((x-0.1f), (y-0.1f), (x+0.1f), (y+0.1f));
RectF asteroidRect = new RectF((asteroidX-0.1f), (asteroidY-0.1f),(asteroidX+0.1f), (asteroidY+0.1f));