【问题标题】:Libgdx swipe gesture across actorLibgdx 在演员之间滑动手势
【发布时间】:2014-10-20 20:37:51
【问题描述】:

如何检测从演员边界之外开始的跨越演员的滑动手势

动作如下 1.用户在actor边界外触摸屏幕 2.用户的手指在屏幕上移动,进入actor边界 3. 然后演员被用户的手指拖动 4.一旦用户抬起手指,演员就会被释放

我可以使用actor上的dragListener和drag方法来拖动一个actor。这仅适用于用户在演员边界内触摸然后移动手指以拖动演员的情况。

我希望用户能够在演员的边界之外触地,然后进入并拖动演员

感谢您的帮助,如果我找到答案,我会继续调查和发布

【问题讨论】:

  • 您是否使用 Box2D 或任何其他物理库来定义物体?
  • 不,我正在使用 gdx.scenes.scene2d。我有一个屏幕,我放置了一个舞台,并且我已经放置了一个演员,我可以检测舞台上的阻力,并且我可以检测演员上的阻力。但我不能将舞台上的阻力传递给演员。如果拖动开始于 Actor 之外,Actor 会忽略拖动
  • 演员在滑动时的预期行为是什么?手指进入演员时会粘在手指上吗?只以恒定速度向滑动方向移动还是立即移动固定距离?
  • 我能做什么:如果你在演员边界内触摸并拖动,演员会粘在手指上并随之移动。我想要的:如果您触摸演员外部并滑动到演员的边界,我还希望演员移动/坚持人物。但是 Actor 会忽略该手势,因为它是在其边界之外开始的。感谢您的回复

标签: java android ios libgdx game-physics


【解决方案1】:

您应该实现一个按顺序执行以下操作的函数:

  • STEP1:如果 Gdx.input.justTouched() 方法返回 true,则转到 STEP2, 否则重复

  • 第 2 步:如果 yourActor.hit(Gdx.input.getX(),
    则转到第 3 步 gdx.input.getY(), true) 返回true,否则重复

  • STEP3:主题 Gdx.input.getDeltaX() 和 Gdx.input.getDeltaY() 到
    yourActor 并转到 STEP4

  • STEP4:如果 Gdx.input.isTouched() 为真,则转到 STEP3,否则转到 STEP1

主要逻辑与此类似,您应该能够理解这个想法并找到一种方法在您的主游戏循环中的某个地方实现它。此外,如果您不熟悉 Input 和 Actor 类中可用的函数,您应该查看 API。

【讨论】: