【问题标题】:Libgdx - box2d- create custom polygonbodyLibgdx - box2d - 创建自定义多边形体
【发布时间】:2013-12-31 08:55:09
【问题描述】:

我试过用这个 Libgdx and Box2D Draw a custom shape 但这对我没有帮助。

假设我有一张图片 - http://cdn.motocross.transworld.net/files/2010/09/geicohondausa2.png

我想为图像创建凸多边形,然后为灯具/主体显示单个图像。

这可能吗? sprite.getVertices 也不起作用..

【问题讨论】:

    标签: libgdx box2d sprite shape


    【解决方案1】:

    Sprite 总是矩形的,这就是为什么 Sprite.getVertices() 在这里没有意义。

    使用链接问题中的编辑器,您可以将主体创建为多边形。然后,您必须在游戏中将其导出/导入为具有正确夹具的 Body。可能您还应该添加一些圆形车轮固定装置并将它们与底盘连接起来。

    您实际上无法将图像添加到正文。 Box2D 对任何类型的渲染或视觉效果一无所知。你需要自己做。使用SpriteBatchSprite。您需要做的就是在渲染精灵之前在每一帧中保持精灵和身体同步。这意味着您执行sprite.setPosition(body.getPosition())sprite.setRotation(body.getRotation()) 之类的操作。 (只是虚拟代码,您可能需要更多转换)。

    【讨论】:

    • 感谢您的回答,我找到了一个可以帮助您在身体上渲染精灵的类,因此您不需要使用 spritebatches。我会尝试使用该工具。
    • @Paul 那是哪个班级?
    • bitbucket.org/dermetfan/somelibgdxtests/src/… 这是。我如何缩放我的身体,真的很低,我不想缩放相机
    • @Paul 缩放身体?或缩放精灵?身体无法缩放,而且 Box2D 也不了解相机。
    • 缩放精灵使其位于身体顶部是(1)决定您想要的像素与米的比率(PTM_RATIO)的功能,(2)创建图形大约您想要的大小(通常)比您想要的显示大小略大,并且(3)在运行时根据它所代表的物理大小的概念调整精灵的比例。请参阅:stackoverflow.com/questions/20299960/…,图片显示大小的精灵。还有一个代码链接。
    【解决方案2】:

    Sprite.getVertices() 返回 20 个浮点数,其中包含 X、Y、U、V 和 Color,因此 5 * 4 = 20,您可以使用例如 SpriteBatch.X1 获取索引为索引 0 的顶点和 SpriteBatch .Y1 Y2 左右,这很好,因为库可能会改变。

    请注意,Box2d 中 PolygonShape 的顶点数应在 3 >= VERTICES 的范围内,因此您不能使用超过 8 个,但是您可以使用多个 Fixtures 并使用 FixtureDef对于每个 PolygonShape 并附加到身体上。

    PolygonShape 上的索引也很重要,(但是新版本的 box2d 并不关心),并且从 Sprite 顶点获取是好的并且被安排。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多