Android libGDX移动对象并检测

时间:2014-03-30 20:13:05

标签: android libgdx

我刚开始尝试libgdx并理解......我看了示例项目...我的问题:

i.hizliresim.com/e79AlN.png

1和6原始球号。和其他球一样,球(1和6)会随机出现在其他地方。 (速度1)。例如如果我在任何一个球上火炬,其速度可达3 ... GameObjects应该在while循环中。球图像有时(随机),球应该自己重新360度。并在TectureRegion上获取图片。 有类似的例子吗?要么 我怎么能这样做?

(抱歉英语不好)

...谢谢

1 个答案:

答案 0 :(得分:1)

据我了解,你希望你的球对象在你退出比赛之前一直移动。你还想加速他们的触摸吗?你也想要纹理它们,也许它们应该检测与屏幕边界和其他球的碰撞?

  1. Libgdx有一个主循环。此循环在每个renderloop中调用render(delta)delta取决于自上次调用render以来经过的时间。因此,在快速设备上,此delta小于慢速设备(大多数时间)。这个时间以秒为单位。要移动对象,可以在每个渲染循环中为其位置添加值。在你的情况下,你想添加1(希望不是像素,因为它在大屏幕上看起来会慢一些):

    for(BallObject ball:ballObjects){      ball.setPositionX(ball.getPositionX()+ ball.getSpeed()* delta * direction.x);      ball.setPositionY(ball.getPositionY()+ ball.getSpeed()* delta * direction.y); }

  2. 在这种情况下,BallObjectpositionXpositionY描述他当前的位置,direction.xdirection.y,描述他在x和y中的移动方向(45°,它将是direction.x = 0.5,direction.y = 0.5),以及描述每秒运动的speed。触摸时此速度将设置为3。

    1. 要在触摸时加快速度,首先需要在类中实现InputProcessor,它管理所有气球对象的移动。接下来,您必须将其设置为游戏的InputProcessorGdx.input.setInputProcessor(this);InputProcessor有一个方法touchDown(int x, int y)或类似的东西。 x和y值在屏幕上以像素为单位给出坐标。 如果您在新的Libgdx版本中使用相机或视口(您应该这样做),则必须使用camera.unproject(x,y)viewport版本(idk确切的方法名称)。此方法为您提供世界坐标系中的触摸位置。然后你可以简单地检查这个触摸屏上的哪个球并将其速度设置为3.
    2. 要对球进行纹理处理,您必须使用SpriteBatch进行绘制。查看API中的不同draw()方法,并使用最适合您的方法。只需加载一个Texture,它应该是带有圆形纹理的“.png”,其余部分应该是透明的(alpha = 0)。启用混合后(默认),它将仅渲染球,即使它实际上是一个形状为Texture的矩形。
    3. 我希望它有所帮助