import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.physics.bullet.collision.btGImpactCollisionAlgorithm;
import com.badlogic.gdx.physics.bullet.collision.btGImpactMeshShape;
import com.badlogic.gdx.physics.bullet.collision.btTriangleIndexVertexArray;
/** @author Xoppa */
public class GimpactTest extends BaseBulletTest {
BulletEntity ground;
btTriangleIndexVertexArray chassisVertexArray;
@Override
public void create () {
super.create();
final Model chassisModel = objLoader.loadModel(Gdx.files.internal("data/car.obj"));
disposables.add(chassisModel);
/* chassisModel.materials.get(0).clear();
chassisModel.materials.get(0).set(ColorAttribute.createDiffuse(Color.RED), ColorAttribute.createSpecular(Color.WHITE));*/
chassisVertexArray = new btTriangleIndexVertexArray(chassisModel.meshParts);
btGImpactMeshShape chassisShape = new btGImpactMeshShape(chassisVertexArray);
chassisShape.setLocalScaling(new Vector3(1f, 1f, 1f));
chassisShape.setMargin(0f);
chassisShape.updateBound();
world.addConstructor("chassis", new BulletConstructor(chassisModel, 1f, chassisShape));
(ground = world.add("ground", 0f, 0f, 0f)).setColor(0.25f + 0.5f * (float)Math.random(),
0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 1f);
/*for (float y = 10f; y < 50f; y += 5f)
world.add("chassis", -2f + (float)Math.random() * 4f, y, -2f + (float)Math.random() * 4f).setColor(
0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 1f);*/
for (float y = 10f; y < 30f; y += 5f)
/* world.add("chassis", -2f + (float)Math.random() * 4f, y, -2f + (float)Math.random() * 4f).setColor(
0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 1f);*/
world.add("chassis", -2f, y, -2f).setColor(
0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 1f);
btGImpactCollisionAlgorithm.registerAlgorithm(world.dispatcher);
}
@Override
public boolean tap (float x, float y, int count, int button) {
shoot(x, y);
return true;
}
@Override
public void dispose () {
super.dispose();
chassisVertexArray.dispose();
chassisVertexArray = null;
ground = null;
}
}
[LIBGDX学习]LibGDX代码详解(三十五)Bullet
最新推荐文章于 2019-10-16 13:08:03 发布
本文介绍了一个使用LibGDX和Bullet Physics库实现的Gimpact碰撞测试示例。该测试创建了一个带有随机颜色的地面实体和多个预设位置的汽车模型实体,并通过Gimpact算法实现了高效的碰撞检测。
759

被折叠的 条评论
为什么被折叠?



