【问题标题】:How should I draw this in a game?我应该如何在游戏中绘制这个?
【发布时间】:2014-01-01 21:51:53
【问题描述】:

我开始为安卓开发游戏,我有一个我认为非常简单的问题。我正在尝试复制如下所示的“不可能的游戏”游戏以进行一些练习。我在播放器用作“地面”的白线时遇到问题。当我想创建它时,我应该创建它自己的纹理并在纹理图集上绘制它,然后将其放入我的游戏关卡图片并使用碰撞检测,还是应该只在背景图像中创建那条线并说如果玩家位置 y = number,然后停止下降?然后当玩家走高时向上滚动相机,这样线条就不会总是停留在屏幕的那个部分。哪种方法更简单?伙计们。我只是不确定哪个更容易。

【问题讨论】:

  • 是什么让你不能只画一条线?
  • 如果除了玩家之外有多个实体在移动(绝对位置),我建议使用碰撞而不是依赖坐标。
  • 好的,所以我将创建一个线条纹理并像我为正方形所做的那样渲染并使用碰撞检测。谢谢。

标签: java android eclipse opengl-es libgdx


【解决方案1】:

您可以使用ShapeRenderer 来画这样一条线:

//x,y your first point, x2,y2 your second point
shapeRenderer.line(x, y, x2, y2);

如果您想获得与您发布的图片相同的效果(有线条淡化的限制),您可以将其分为 3 行,一小行从全透明颜色变为白色,另一行全白为其中最长,另一端从全白变为全透明。

类似这样的:

white = new Color(1,1,1,1);
transp = new Color(1,1,1,0);

shapeRenderer.line(x, y, x2, y2, transp, white); //Transp. to white
shapeRenderer.line(x2, y2, x3, y3, white, white); //all White
shapeRenderer.line(x3, y3, x4, y4, white, transp); //White to transp

只需设置正确的点。 (并且不要每帧都创建新的Colors!)

当然,您也可以在您的地图集中制作一个全白的TextureRegion(即使是 1x1 也可以)。只需按照您想要的大小和位置进行渲染。

batch.draw(whiteregion, x, y, width, height);

【讨论】: