我正在制作2D平台游戏。我为平台创建了一个纹理,该纹理可以一遍又一遍地重复以填充整个平台,而无需进行重复。我的第一个尝试是手动从位图绘制所有像素,但这导致背景在移动平台时闪烁(运动和绘制线程是分开的,因此运动可以以特定速度运行,而FPS则不然)。不需要受苦)。我发现此技术效果更好:
// Init
bitmap = new BitmapDrawable(res, Texture.PLATFORM.getBitmap());
bitmap.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
// Drawing loop
int x = getX() + (isStill() ? 0 : (int)MainActivity.offsetX);
int y = getY() + (isStill() ? 0 : (int)MainActivity.offsetY);
bitmap.setBounds(x, y, x + getWidth(), y + getHeight());
bitmap.draw(canvas);
但是,当平台充当通向位图的“视点”时,位图似乎保持静态。我能想到的唯一解决方法是以某种方式“抵消”静态位图:
bitmap.offset(x, y);
显然,这不是函数。在查看文档时,我找不到能满足我想要的内容。
为了概括起见,BitmapDrawable导致背景不随平台移动,使其看起来超级怪异。
提前感谢!
尝试使用您的代码中的这些技巧:(我假设游戏在水平方向上向前移动)
BitmapDrawable
方法将其重新显示在所需位置),并在整个游戏中继续对其他对象重复使用。setBounds()
方法进行必要的基于位置的更改,因为我找不到其他方法来更新setBounds(a, b, c, d)
的位置实例。我认为,您需要使用libGdx之类的游戏框架来获得BitmapDrawable
之类的豪华方法。