如何在使用canvas.translate时更新碰撞检测矩形

时间:2015-07-17 02:40:38

标签: android canvas

我使用x和y整数创建了一个矩形,当我触摸矩形并沿某个方向滑动时会改变值(当我向右滑动时x增加,当我向上滑动时y增加,等等)。此矩形也将呈现在画布上。我有一个游戏循环,它调用update()方法和render()方法。 update()方法更新x和y值并创建碰撞检测矩形,然后render()方法使用这些值将更新的矩形渲染到画布。

假设我在游戏循环中绘制此矩形之前使用方法canvas.translate(0,-50)。矩形看起来比以前高50像素,但是我的x和y值保持不变,所以我必须在我渲染的矩形下方滑动才能实际执行某些操作。什么是更新x和y的简单而有效的方法,以便我的矩形实际上位于渲染的位置而不是它的下方?我需要将碰撞检测框放在绘制矩形的位置。

1 个答案:

答案 0 :(得分:0)

我自学了如何编程,所以我不确定是否有更简单的方法,但如果我是你,只要你调用canvas.translate(),只需更改x和y值进行调整。例如,这就是我为你提供的样本做的事情:

    canvas.translate(0, -50)
    x = x+0
    y = y+(-50)

如果你懒得添加额外的两行,你可以将它全部放入一个函数中,只需用你所做的任何函数替换canvas.translate()。

事实上,我现在将完成这项功能。为什么不呢?

    public void translate(double XMove, double YMove) {
         canvas.translate(XMove, YMove);
         x = x+XMove;
         y = y+YMove;
    }