我刚开始尝试libgdx并理解......我看了示例项目...我的问题:
1和6原始球号。和其他球一样,球(1和6)会随机出现在其他地方。 (速度1)。例如如果我在任何一个球上火炬,其速度可达3 ... GameObjects应该在while循环中。球图像有时(随机),球应该自己重新360度。并在TectureRegion上获取图片。 有类似的例子吗?要么 我怎么能这样做?
(抱歉英语不好)
...谢谢
答案 0 :(得分: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); }
在这种情况下,BallObject
有positionX
和positionY
描述他当前的位置,direction.x
和direction.y
,描述他在x和y中的移动方向(45°,它将是direction.x = 0.5,direction.y = 0.5),以及描述每秒运动的speed
。触摸时此速度将设置为3。
InputProcessor
,它管理所有气球对象的移动。接下来,您必须将其设置为游戏的InputProcessor
:Gdx.input.setInputProcessor(this);
。 InputProcessor
有一个方法touchDown(int x, int y)
或类似的东西。 x和y值在屏幕上以像素为单位给出坐标。
如果您在新的Libgdx版本中使用相机或视口(您应该这样做),则必须使用camera.unproject(x,y)
或viewport
版本(idk确切的方法名称)。此方法为您提供世界坐标系中的触摸位置。然后你可以简单地检查这个触摸屏上的哪个球并将其速度设置为3. SpriteBatch
进行绘制。查看API中的不同draw()
方法,并使用最适合您的方法。只需加载一个Texture
,它应该是带有圆形纹理的“.png”,其余部分应该是透明的(alpha = 0)。启用混合后(默认),它将仅渲染球,即使它实际上是一个形状为Texture
的矩形。我希望它有所帮助