Android:RectF和碰撞检测不起作用

时间:2015-04-08 20:22:50

标签: java android rect

我在我的2个游戏对象上使用两个RectF来检测它们之间的碰撞。

以下是设置RectFs的两行:

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错误?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

根据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));