我正在写一个游戏,我需要检查两个观点之间的冲突。由于某种原因,当我使用view.getHitRect(outputRect)方法时,视图的底部填充(所有其他填充都设置为0)将添加到视图命中矩形的顶部属性中。我试图通过重写getHitRect方法来解决这个问题:

public abstract class GameView extends ImageView {
    @Override
    public void getHitRect(Rect outRect) {
        super.getHitRect(outRect);
        outRect.top+=getPaddingBottom();
    }

这给了我一个更好的结果,但它仍然是不准确的,填充越大,矩形变得越不准确,碰撞总是发生得太低。在使用填充物之前,我试图在没有填充物的情况下使用它,这给了我准确的命中率,但我得到了different bug。提前谢谢

最佳答案

经过反复试验才解决了这个问题。显然,填充被添加到矩形中,但是它在rect.top和rect.bottom之间被平均分配,所以解决方案是:

@Override
public void getHitRect(Rect outRect) {
    super.getHitRect(outRect);
    outRect.top+=getPaddingBottom()/2;
    outRect.bottom-=getPaddingBottom()/2;
}

如果你们中的一个安卓专家愿意解释为什么我会很感激,因为我不明白它是如何工作的,我只是看不到其中的逻辑。

07-24 09:49