简短版本:
如何从Physics Body编辑器中获取基本的< code > com . badlogic . math . gdx . polygon ?
长版本:
我已经为LibGDX实现了加载器,但是加载器通过它的内部 RigidBody
类使用它自己的内部多边形模型
类。但这似乎并不是很“微不足道”。我想到的东西看起来像这样:
List<Polygon> myPolygons = new ArrayList<Polygon>();
Map<String, BodyEditorLoader.RigidBodyModel> bodyMap = loader.getInternalModel().rigidBodies;
for (BodyEditorLoader.RigidBodyModel m : bodyMap.values())
{
for (BodyEditorLoader.PolygonModel pm : m.polygons)
{
float[] vertArray = new float[pm.vertices.size() * 2];
int count = 0;
for (Vector2 v2 : pm.vertices)
{
vertArray[count] = v2.x;
vertArray[count + 1] = v2.y;
count += 2;
}
myPolygons.add(new Polygon(vertArray));
}
}
这是相当麻烦的,我有这个完整的加载器,只是为了剥离它构建的所有内容,直到索引,并从中构建我自己的多边形。然而,编辑器确实为我提供了一个json,但不幸的是,它是一行,因此json的好处被浪费了。如果我可以手动修复布局并破译需要解析的内容,但我想知道我是否没有在这里重新发明轮子。
除此之外,可能只有一个非常简单的解决方案来得到我的多边形。
我要它做什么?我在为我的精灵寻找一些精确的碰撞检测。矩形和圆形都不行。多边形非常适合这种情况,它们有一个矩形用于廉价的检测,并且< code>Intersector可以处理两个多边形的冲突。我能想到的唯一有效创建这些多边形的方法是使用我链接的编辑器。
如果有人有更好的建议,我都洗耳恭听。
这是我当前的Json输出的样子。对我来说,它有冗余节点,但只有一行没有空格和行尾,解密很痛苦。
{"rigidBodies":[{"name":"terrain","imagePath":"groundGrass.png","origin":{"x":6.250441074371338E-4,"y":-6.705522537231445E-8},"polygons":[[{"x":0.375,"y":0.05569307133555412},{"x":0.3087501525878906,"y":0.0837499126791954},{"x":0.19375014305114746,"y":0.07812491804361343},{"x":0.16212871670722961,"y":0.0445544607937336}],[{"x":0.16212871670722961,"y":0.0445544607937336},{"x":0.5792078971862793,"y":0.034653469920158386},{"x":0.426980197429657,"y":0.05445544794201851},{"x":0.375,"y":0.05569307133555412}],[{"x":0.5792078971862793,"y":0.034653469920158386},{"x":0.5406249761581421,"y":0.07374989986419678},{"x":0.46039605140686035,"y":0.0717821791768074},{"x":0.426980197429657,"y":0.05445544794201851}],[{"x":0.05198019742965698,"y":0.035891093313694},{"x":0.0445544570684433,"y":0.04207921028137207},{"x":0.007425742689520121,"y":0.043316833674907684},{"x":0,"y":0.037128716707229614}],[{"x":0,"y":0.037128716707229614},{"x":8.940696716308594E-8,"y":6.249025464057922E-4},{"x":0.10891088843345642,"y":0.03217822313308716},{"x":0.05198019742965698,"y":0.035891093313694}],[{"x":8.940696716308594E-8,"y":6.249025464057922E-4},{"x":0.6596534848213196,"y":0.01980198174715042},{"x":0.6274752616882324,"y":0.03341584652662277},{"x":0.5792078971862793,"y":0.034653469920158386},{"x":0.16212871670722961,"y":0.0445544607937336},{"x":0.10891088843345642,"y":0.03217822313308716}],[{"x":8.940696716308594E-8,"y":6.249025464057922E-4},{"x":0.9987500905990601,"y":-6.250739097595215E-4},{"x":0.7093750238418579,"y":0.01874990016222},{"x":0.6596534848213196,"y":0.01980198174715042}],[{"x":0.9987500905990601,"y":-6.250739097595215E-4},{"x":0.9987500905990601,"y":0.04374990612268448},{"x":0.9418317079544067,"y":0.05816832184791565},{"x":0.7846534848213196,"y":0.05816832184791565},{"x":0.7400990128517151,"y":0.053217824548482895},{"x":0.7093750238418579,"y":0.01874990016222}],[{"x":0.9418317079544067,"y":0.05816832184791565},{"x":0.9212501049041748,"y":0.08749989420175552},{"x":0.8131188154220581,"y":0.08292079716920853},{"x":0.7846534848213196,"y":0.05816832184791565}]],"circles":[],"shapes":[{"type":"POLYGON","vertices":[{"x":0.9212501049041748,"y":0.08749989420175552},{"x":0.9418317079544067,"y":0.05816832184791565},{"x":0.9987500905990601,"y":0.04374990612268448},{"x":0.9987500905990601,"y":-6.250739097595215E-4},{"x":8.940696716308594E-8,"y":6.249025464057922E-4},{"x":0,"y":0.037128716707229614},{"x":0.007425742689520121,"y":0.043316833674907684},{"x":0.0445544570684433,"y":0.04207921028137207},{"x":0.05198019742965698,"y":0.035891093313694},{"x":0.10891088843345642,"y":0.03217822313308716},{"x":0.16212871670722961,"y":0.0445544607937336},{"x":0.19375014305114746,"y":0.07812491804361343},{"x":0.3087501525878906,"y":0.0837499126791954},{"x":0.375,"y":0.05569307133555412},{"x":0.426980197429657,"y":0.05445544794201851},{"x":0.46039605140686035,"y":0.0717821791768074},{"x":0.5406249761581421,"y":0.07374989986419678},{"x":0.5792078971862793,"y":0.034653469920158386},{"x":0.6274752616882324,"y":0.03341584652662277},{"x":0.6596534848213196,"y":0.01980198174715042},{"x":0.7093750238418579,"y":0.01874990016222},{"x":0.7400990128517151,"y":0.053217824548482895},{"x":0.7846534848213196,"y":0.05816832184791565},{"x":0.8131188154220581,"y":0.08292079716920853}]}]}],"dynamicObjects":[]}
我想部分回答我自己的问题。因为Json的输出不可读,所以我去了jsoneditoronline.org/,粘贴了一行Json。通过将代码复制到树编辑器,然后再复制回代码编辑器,我现在有了一个可读的Json版本。
它仍然有多余的节点在里面,一个工具,只是给我的原点和指数/顶点将是完美的。但是我可以继续使用这个伟大的工具来管理我的资产。
嗨,伙计们, 我正在使用libgdx为android开发一个游戏。我完全陷入了探测两个物体碰撞的部分。我有一个我通过下面的函数创建的播放器 和我用玩家相同的功能创建的敌人,我只更改file_path和fixture_name。file_path指向我用box2d编辑器创建的. json文件(站点:http://www.aurelienribon.com/blog/projects/physics-
我正在使用Eclipse IDE。我想首先开发一个插件,这个插件可以让我得到整个源代码作为一个简单的字符串。
问题内容: 之前我问过如何在重命名TreeNode时触发事件(此处)。我的问题已经回答,但是我遇到了另一个问题。我需要访问在CellEditorListener的editingStopped事件中正在编辑的TreeNode。这是我要做的代码: 我收到此错误: 线程“ AWT-EventQueue-0”中的异常java.lang.ClassCastException:javax.swing.tree
我最近开始使用Libgdx进行开发。现在,我正在研究自定义形状的碰撞检测。就我而言,我想检测鲨鱼与其他物体的碰撞。由于鲨鱼是一种自定义形状,我使用了Physics Body Editor(https://code.google.com/p/box2d-editor/downloads/detail?name=physics-车身编辑器-2.9.2.zip 我已经有了鲨鱼和其他东西的图像绘制的代码,
我想在用户在EditText中键入文本时将文本放入我的应用程序中的某个字符串中,并使用它来生动地在活动上显示它(在不同的视图中...) - 就像谷歌的实时/即时搜索工作一样...
问题内容: 我在单个SQL语句中从多个表中提取Sums时遇到问题。 我有三个表tblCases,tblTimesheetEntries和tblInvoices在tblCases和其他两个表之间存在一对多的关系。 我目前正在使用以下SQL语句 但是,这似乎重复了发票金额。例如,如果一个案例只有一张发票,但是说有4个时间表条目,则它将计算出发票金额的4倍作为该表的总和。 如果我将分组取出,然后运行以下