我有一个精灵在背景图像上以 1,1 的速度移动。我想绘制背景图像,精灵始终位于中心,因为背景约为 2000x2000。我的问题是精灵移动背景重新定位,但它好像精灵在 2,2 移动而背景在 1,1 移动。所以即使精灵在 1,1 处移动并且背景肯定不能移动得比这慢,精灵也会逐渐移出屏幕?
要更新精灵的速度:
Point car = new Point(
((GameBoard) findViewById(R.id.the_canvas)).getCarX(),
((GameBoard) findViewById(R.id.the_canvas)).getCarY());
car.x = car.x + carVelocity.x;
car.y = car.y + carVelocity.y;
((GameBoard) findViewById(R.id.the_canvas))
.setCarLocation(car.x, car.y);
速度的定义:
carVelocity = new Point(1, 1);
绘制汽车周围的地图: public void drawMap(Canvas canvas) {
if (car.x > 0) {
int x = car.x - getWidth() / 2;
int y = car.y - getHeight() / 2;
Bitmap clipArea = Bitmap.createBitmap(map, x, y, getWidth(),
getHeight());
canvas.drawBitmap(clipArea, 0, 0, null);
}
}
所以我不明白为什么汽车会在我看来从屏幕上移开,因为背景应该总是在屏幕中间绘制汽车。我已经对两者都进行了登录,并且它们每次都在 X 和 Y 上增加 1。
任何帮助,将不胜感激!
编辑:
嗨,这是汽车的绘图部分:
公共无效drawCar(帆布画布){
if (car.x > 0) {
m.reset();
m.postTranslate((float) (getWidth() / 2), (float) (getHeight() / 2));
m.postRotate(carRotation,
(float) (getWidth()/2 + carBounds.width() / 2.0),
(float) (getHeight()/2 + carBounds.height() / 2.0));
canvas.drawBitmap(carBitmap, m, null);
}
如果我像上面那样绘制它,那么它会在中心绘制(我在测试时使用它)但是当然我永远无法到达地图的边缘,因为一旦我在位图的末尾,它就会停留在屏幕的中间. 一旦我更改为 car.x 和 car.y 而不是 getWidth()/2 它就会逐渐从屏幕上消失。