java - PolygonShape 对象上缺少两个顶点

标签 java box2d

我在使用 PolygonShape 对象 box2D 时遇到一些问题。 我有 8 个顶点绘制代码:

float scaleW = width/12;
float scaleH = height/2;
chassisShape.set(new float[] {-scaleW*2,scaleH,  scaleW*2,scaleH,  scaleW*3,0,      scaleW*7,0,  scaleW*7,-scaleH,  -scaleW*5,-scaleH,  -scaleW*5,0,  -scaleW*3,0});

但这仅渲染 6 个顶点的多边形。 2 个缺失的顶点在哪里?

截图: /image/nVhJT.png

也许我犯了一个错误,但我验证了很多次,但我没有看到发生了什么。

感谢您的帮助!

编辑: 感谢您的帮助。 也许我不明白什么是凸多边形,因为我很确定它是凸的:

我的原型(prototype)屏幕:/image/rRIHN.png

所以,如果我尊重这个骨架,我的代码中是否存在错误? (逆时针?或者这也不是凸的?)

EDIT2:好吧,我只是看到:如果角度大于 180°,它是凹的,所以我必须更改形状以比三角测量更简单。

最佳答案

该多边形必须是凸多边形,而该多边形不是。理想情况下,它也应该逆时针缠绕,但事实并非如此。

enter image description here

在这种情况下,Box2D 将使用给定顶点的凸包,这就是为什么您最终会得到六边形多边形。

关于java - PolygonShape 对象上缺少两个顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22340300/

相关文章:

iphone - Cocos2d。漫反射图像 (60 fps)

android - 在我的 android 项目中使用 android box 2d

iphone - Box2d - 赋予物体吸引力/重力

java - LibGDX。 Endless Runner 创建 'ceiling'

java - 将 String 转换为 int 数组

java - 谷歌 Guava : Supported way to get elements of a collection that comply with a given predicate?

Java如何在Panel上添加组件?

java - 如何记录我的项目上的 Activity

ios - 使用 b2RevoluteJointDef 时如何设置旋转 anchor

java - Libgdx/java 使用 box2d light 时性能崩溃