【问题标题】:libGdx How to use images or actor as bodylibGdx 如何使用图像或演员作为身体
【发布时间】:2013-08-20 19:27:14
【问题描述】:

我浏览了 libGdx wiki/tutorial,但没有找到使用图像或演员作为物理体的示例。 在我的游戏中,我在舞台上添加了一个演员。 但我想将此演员或精灵图像添加为物理体。

我必须拖动这个actor,甚至想检测与其他物体的碰撞。

如果有请给我参考。

谢谢

【问题讨论】:

  • @VikalpJain 这完全是错误的。 scene2d.ui 仅用于 UI。 scene2d 是一个 2d 场景图,它也可以与使用 box2d 的物理实体一起使用,并且之前已经做过很多次了。

标签: libgdx actor tile


【解决方案1】:
【解决方案2】:

这有点棘手。您不使用图像或 Actor 作为物理体。

您将需要实现类似于扩展 Actor 的新“PhysicsActor”之类的东西。这个 Physics actor 将拥有一个 body 作为属性,并将成为您的 libgdx 场景和 box2d 世界之间的桥梁。

Actor 将根据身体的位置更新其位置(注意米到像素的转换)。 Actor 会像点击它一样接收输入,并且需要为要拖动的 Body 创建一个 (Mouse-)Joint 并跟随鼠标。

如何处理附加到正文的图像的渲染也是自定义的。您可以手动给每个 PhysicsEntity 一个 Sprite,该 Sprite 将由 draw-call 渲染。或者您将使用一个编辑器(例如 RUBE,在 libgdx 论坛的贡献部分也有一个 rube-loader),它可以让您将图像附加到正文,然后您将从编辑器中读取这些图像。

您也可以查看此链接http://www.netthreads.co.uk/2012/04/23/libgdx-box2d-scene2d-bumpers-demo/ 我想这正是您所需要的,但它的实现似乎有点不同。他使用某种 Layer 架构来连接 libgdx 场景和 box2d 世界。

【讨论】:

  • 我正在考虑在我的下一场比赛中结合 box2d 和 scene2d(如果我完成了这个:P)。在我目前的游戏中,我使用的是世界单位而不是像素(通过使用相机 vewport)。 1 个 worldunit 将适合 1 米的 box2d。我仍然必须从米转换为像素还是可以使用这个米来渲染所有内容?
  • @Springrbua 在这种情况下不需要转换,但我不建议您使用 1:1 的比例。来自 box2d 常见问题解答:“您应该尝试让移动物体在 0.1 - 10 米的范围内”。拥有 1:1 的比例将使您的对象只有 10x10 像素以保持精确的结果。
  • 我想你误解了...我使用的是世界单位,它的大小取决于屏幕分辨率。我说在每个屏幕上必须有 50 个图块 x 和 32 个图块 y。如果屏幕的分辨率为 500 * 320,则每个图块为 10px。屏幕是 1000 * 640 每个图块是 20 像素...所以 1 米应该是 1 个世界单位,即 500*320 分辨率为 10 像素,1000 * 640 分辨率为 20 像素。
猜你喜欢
  • 1970-01-01
  • 2016-05-02
  • 2013-01-18
  • 2012-12-04
  • 2020-06-13
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多