java - Libgdx 子弹显示碰撞对象

标签 java libgdx bullet bulletphysics

好吧,所以我想知道为什么当我运行这个时我看不到子弹碰撞对象问题。菜鸟错误

    public static PerspectiveCamera cam;
static btCollisionWorld collisionWorld;
DebugDrawer debugDrawer;
public ModelBatch modelBatch;
btCollisionConfiguration collisionConfig;
static btDispatcher dispatcher;
btBroadphaseInterface broadphase;
public static btCollisionShape voxelShape;
public static Model model;
public static ModelInstance test;
public static btCollisionShape collisiontest;
public static btCollisionObject collisiontestobject;

@Override
public void create () {
    Bullet.init();
    collisionConfig = new btDefaultCollisionConfiguration();
    dispatcher = new btCollisionDispatcher(collisionConfig);
    broadphase = new btDbvtBroadphase();
    collisionWorld = new btCollisionWorld(dispatcher, broadphase, collisionConfig);

    cam = new PerspectiveCamera(67, 1280, 720);
    cam.position.set(10f,10f,10f);
    cam.lookAt(0,0,0);
    cam.near = 1f;
    cam.far = 300f;
    cam.update();

    modelBatch = new ModelBatch();


    ModelBuilder modelBuilder = new ModelBuilder();
    model = modelBuilder.createBox(3f, 3f, 3f,
            new Material(ColorAttribute.createDiffuse(Color.BLUE)),
            Usage.Position | Usage.Normal);

    test = new ModelInstance(model);

    test.transform.setTranslation(0,0,0);

    collisiontest = new btBoxShape(new Vector3 (6f,6f,6f));

    collisiontestobject = new btCollisionObject();
    collisiontestobject.setCollisionShape(collisiontest);
    collisiontestobject.setWorldTransform(new Matrix4());

    debugDrawer = new DebugDrawer();
    debugDrawer.setDebugMode(btIDebugDraw.DebugDrawModes.DBG_MAX_DEBUG_DRAW_MODE);

    collisionWorld.setDebugDrawer(debugDrawer);


}

@Override
public void render () {

    cam.update();


    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);


    debugDrawer.begin(cam);
    collisionWorld.debugDrawWorld();
    debugDrawer.end();

    //modelBatch.begin(cam);
    //modelBatch.render(test);
    //modelBatch.end();


}

当我运行这个程序时,我希望看到碰撞对象的框架,但我什么也没看到...这是我由于存在很多子弹问题而创建的测试程序..

最佳答案

您所做的一切都是正确的,只缺少一件事:

collisionWorld.addCollisionObject(collisiontestobject);

创建对象后,您仍然需要将其添加到碰撞世界中。这就是 DebugDrawer 不渲染任何内容的原因。它根本不知道这个对象。

关于java - Libgdx 子弹显示碰撞对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027423/

相关文章:

opengl - LibGDX 纹理混合与 OpenGL 混合功能

c++ - bullet 3d 中的滚动摩擦表现不像演示

swift - 如何禁用textView中的部分选择?

bullet - Ammo.js 自定义网格与球体碰撞

java - Spring webflux非阻塞响应

java - 在 Hibernate/JPA 映射中自动为列名添加特定于表的前缀?

java - 如何为弹出窗口提供弯曲边缘并为弹出窗口提供明显的阴影

java - 无法定位平台 : 'Java SE 12' using tool chain: 'JDK 8 (1.8)'

android - LibGdx录制和播放声音

java - 如何解决 "Inconsistency detected: dl-lookup.c: 111"(Java 结果 127)错误?