【发布时间】: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 and Box2D Draw a custom shape 但这对我没有帮助。
假设我有一张图片 - http://cdn.motocross.transworld.net/files/2010/09/geicohondausa2.png
我想为图像创建凸多边形,然后为灯具/主体显示单个图像。
这可能吗? sprite.getVertices 也不起作用..
【问题讨论】:
Sprite 总是矩形的,这就是为什么 Sprite.getVertices() 在这里没有意义。
使用链接问题中的编辑器,您可以将主体创建为多边形。然后,您必须在游戏中将其导出/导入为具有正确夹具的 Body。可能您还应该添加一些圆形车轮固定装置并将它们与底盘连接起来。
您实际上无法将图像添加到正文。 Box2D 对任何类型的渲染或视觉效果一无所知。你需要自己做。使用SpriteBatch 和Sprite。您需要做的就是在渲染精灵之前在每一帧中保持精灵和身体同步。这意味着您执行sprite.setPosition(body.getPosition()) 和sprite.setRotation(body.getRotation()) 之类的操作。 (只是虚拟代码,您可能需要更多转换)。
【讨论】:
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 顶点获取是好的并且被安排。
【讨论】: