我将 AndEngine 与 Box2d 扩展一起使用,当我的游戏加载 map 时,有时会崩溃(是的,只是有时。对我来说,它看起来很随机),轨迹如下所示:
#00 pc 00014480 /data/app-lib/com.sergio.game-2/libandenginephysicsbox2dextension.so (b2Body::CreateFixture(b2FixtureDef const*)+8)
#01 pc 0000c408 /data/app-lib/com.sergio.game-2/libandenginephysicsbox2dextension.so (Java_com_badlogic_gdx_physics_box2d_Body_jniCreateFixture__JJFFFZSSS+112)
#02 pc 0001dbcc /system/lib/libdvm.so (dvmPlatformInvoke+112)
#03 pc 0004e123 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#04 pc 00000214 /dev/ashmem/dalvik-jit-code-cache (deleted)
它不会告诉我到底哪里崩溃了,我也不知道该看哪里。我像往常一样创建主体和固定装置:
FixtureDef wallfixture = PhysicsFactory.createFixtureDef(0, 0, 0.2f);
wallfixture.filter.categoryBits = CATEGORY_WALL;
wallfixture.filter.maskBits = MASK_WALL;
final Body theBody = PhysicsFactory.createBoxBody(mPhysicsWorld, greenRectangle, BodyType.StaticBody, wallfixture);
有什么想法吗?
最佳答案
根据我的经验,box2d 中的装置经常出现几个问题:
- 绕行顺序无效;
- 非凸多边形;
- 形状尺寸太小。当几个点之间的距离太短时,box2d 会假设它们是一个点。这就是为什么 box2d 可以将三角形解释为一条线,例如,这是 Not Acceptable (多边形必须至少有 3 个点)。
检查您的所有灯具是否始终符合这些规则。看起来您正在随机生成灯具,并且有时某些灯具在所描述的含义中变得无效。
关于java - Box2d 与 AndEngine 异常创建固定装置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26740086/