【问题标题】:Android libGDX moving object and detectAndroid libGDX 移动物体和检测
【发布时间】:2014-03-31 17:26:55
【问题描述】:

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

1 和 6 的原始球号。和其他球一样,球的(1 和 6)会随机去其他地方。 (速度 1)。前任 。如果我是任何球上的火炬,它的速度高达 3... GameObjects 应该在 while 循环中。球图像有时(随机),球应该返回自己的 360 度。并在 TectureRegion 上获取图片。 有没有类似的例子?或者 我该怎么做?

(抱歉英语不好)

谢谢...

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    据我所知,您希望您的球对象在您退出游戏之前一直移动。你也想加快他们的触摸速度吗?您还想对它们进行纹理处理,也许它们应该检测与屏幕边框和其他球的碰撞?

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

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

    在这种情况下,BallObject 有一个 positionXpositionY 描述他的当前位置,一个 direction.xdirection.y 描述他在 x 和 y 方向上的移动(对于 45°,这将是方向。 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 确切的方法名称)。此方法为您提供世界坐标系中的触摸位置。然后您可以简单地检查哪个球在这个 touchpos 上并将其速度设置为 3。
    2. 要对球进行纹理处理,您必须使用SpriteBatch 进行绘图。查看API 中不同的draw() 方法并使用最适合您的方法。只需加载一个Texture,它应该是一个带有圆形纹理的“.png”,其余部分应该是透明的(alpha = 0)。启用混合(默认)后,它只会渲染球,即使它实际上是一个矩形Texture

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2012-11-12
      相关资源
      最近更新 更多