在x和y方向上重复时设置BitmapDrawable的偏移量吗?

问题描述 投票:0回答:1

我正在制作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导致背景不随平台移动,使其看起来超级怪异。

提前感谢!

java android android-bitmap bitmapdrawable
1个回答
0
投票

尝试使用您的代码中的这些技巧:(我假设游戏在水平方向上向前移动)

  1. GUY 仅应>]上下移动(使用适当的触摸输入),而不向前和向后则只想在GUY上聚焦(或选择摄像头)。我注意到WALL当GUY从墙的最初较高位置移至稍低的位置之后,视频在您的视频中向上移动,请纠正此问题,因为GUY应该向下移动(尝试实现重力效果)。
  2. WALL 仅应>]向前(大部分)和向后移动(我猜不太频繁)。WALL不应正常地上下移动。
  3. 请勿对其应用重力效果。您可以为一个屏幕至少创建2个[W0] WALL实例。它们将被顺序重用(例如:如果第一个完全超出屏幕,请使用BitmapDrawable方法将其重新显示在所需位置),并在整个游戏中继续对其他对象重复使用。
  4. 当前的蓝色背景,如果它是较大地图的一部分,则需要适当地偏移。
  5. 在撰写本文时,我能想到的障碍之一是向下移动墙壁
  6. 直到它离开屏幕,导致GUY死亡。
  7. 在那些使用了单词[[move的地方,您需要使用setBounds()方法进行必要的基于位置的更改,因为我找不到其他方法来更新setBounds(a, b, c, d)的位置实例。我认为,您需要使用libGdx之类的游戏框架来获得BitmapDrawable之类的豪华方法。
  8. 抱歉,我只能在没有特定代码的情况下向您介绍这些想法,因为我以前在这样的项目中工作没有经验。希望它能为您提供任何帮助。
© www.soinside.com 2019 - 2024. All rights reserved.