我在两个游戏对象上使用了两个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));

10-08 14:14