我正在制作一个 2D 平台游戏。我已经为平台创建了一个纹理,这意味着可以一遍又一遍地重复以填充整个平台,而不会重复。我的第一次尝试是手动从位图中绘制所有像素,但这会导致在移动平台时背景闪烁(移动和绘制线程是分开的,因此移动可以以特定速度运行,而 FPS 则不会) t需要受苦)。我发现这种技术效果更好:
// 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 导致背景不随平台移动,使它看起来超级怪异。
提前致谢!