我在我的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错误?有什么想法吗?
答案 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));