当JBullet检测到冲突时如何执行回调?

问题描述 投票:0回答:1

因此,目前,我有一个JBullet实例在其自己的线程上运行,并且我不知道如何获取有关JBullet 20101010-1上的冲突的信息。

我曾尝试如下所示致电ContactAddedCallback,但没有任何反应。

new ContactAddedCallback() {

            @Override
            public boolean contactAdded(ManifoldPoint cp, CollisionObject colObj0, int partId0, int index0,
                    CollisionObject colObj1, int partId1, int index1) {
                System.out.println("Collision");
                return false;
            }
        };
callback collision jbullet
1个回答
0
投票

您必须将ContactAddedCallback添加到BulletGlobals

在创建ContactAddedCallback之后像这样[[::

ContactAddedCallback myCollisionCallback = new ContactAddedCallback() { @Override public boolean contactAdded( ManifoldPoint cp, CollisionObject colObj0, int partId0, int index0, CollisionObject colObj1, int partId1, int index1) { System.out.println("hi i am collision !!");// :| return false; } };
并像这样将标志添加到刚体

::

rb = new RigidBody(constructionInfo); rb.setCollisionFlags(CollisionFlags.CUSTOM_MATERIAL_CALLBACK);
现在添加到

BulletGlobals

像这样[[::BulletGlobals.setContactAddedCallback(myCollisionCallback);

如果您想让哪个RigidBody发生冲突,请执行此[[::

创建CollisionShape时,必须像这样添加userPointer

::

BoxShape groundShape = new BoxShape(new Vector3f(1000,10,1000)); rb = new RigidBody(constructionInfo); ... groundShape.setUserPointer(rb);

和最后在ContactaddedCallback中,您可以像这样检查::

ContactAddedCallback myCollisionCallback = new ContactAddedCallback() {

    @Override
    public boolean contactAdded(

        ManifoldPoint cp, 
        CollisionObject colObj0, 
        int partId0, 
        int index0,
        CollisionObject colObj1, 
        int partId1, 
        int index1) {

        if (colObj0.getUserPointer().equals(rb)) {

            //for sample you can push them to up
            rb.applyCentralImpulse(new Vector3f(0,1,0));

        }

        if (colObj1.getUserPointer().equals(rb)) {

            rb.applyCentralImpulse(new Vector3f(0,1,0));

        }
        System.out.println("hi i am collision !!");// :|
        return false;
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.