Я пытаюсь использовать отдельно gdx-bullet и запускать hello world, как в cpp, и я получаю значения от 0 до 2 и выше.
Почему это в jbullet и cpp bulletотлично работает любая идея, почему это может быть setToTranslation
или строковый вывод image . Вот код:
public static void main(String[] args) {
Bullet.init();
btCollisionConfiguration collisionConfig;
btCollisionDispatcher dispatcher;
btBroadphaseInterface overlappingPairCache;
btSequentialImpulseConstraintSolver solver;
btDiscreteDynamicsWorld dynamicWorld;
ArrayList<btCollisionShape> collisionShapes;
collisionShapes = new ArrayList<btCollisionShape>();
collisionConfig = new btDefaultCollisionConfiguration();
dispatcher = new btCollisionDispatcher(collisionConfig);
overlappingPairCache = new btDbvtBroadphase();
solver = new btSequentialImpulseConstraintSolver();
dynamicWorld = new btDiscreteDynamicsWorld(dispatcher, overlappingPairCache, solver, collisionConfig);
dynamicWorld.setGravity(new Vector3(0, -10f, 0));
{
btCollisionShape groundShape = new btBoxShape(new Vector3(50.f, 50.f, 50.f));
collisionShapes.add(groundShape);
Matrix4 groundTransform = new Matrix4();
groundTransform.setToTranslation(new Vector3(0, -56, 0));
float mass = 0f;
boolean isDynamic = (mass != 0f);
Vector3 localInertia = new Vector3(0, 0, 0);
if (isDynamic)
groundShape.calculateLocalInertia(mass, localInertia);
btDefaultMotionState myMotionState = new btDefaultMotionState(groundTransform);
btRigidBodyConstructionInfo rbInfo = new btRigidBodyConstructionInfo(mass, myMotionState, groundShape,
localInertia);
btRigidBody body = new btRigidBody(rbInfo);
dynamicWorld.addRigidBody(body);
}
{
btCollisionShape colShape = new btSphereShape(1.f);
collisionShapes.add(colShape);
Matrix4 startTransform = new Matrix4();
startTransform.setToTranslation(new Vector3(2, 10, 0));
float mass = 1;
boolean isDynamic = (mass != 0f);
Vector3 localInertia = new Vector3(0, 0, 0);
if (isDynamic)
colShape.calculateLocalInertia(mass, localInertia);
btDefaultMotionState myMotionState = new btDefaultMotionState(startTransform);
btRigidBodyConstructionInfo rbInfo = new btRigidBodyConstructionInfo(mass, myMotionState, colShape,
localInertia);
btRigidBody body = new btRigidBody(rbInfo);
dynamicWorld.addRigidBody(body);
}
for (int i = 0; i < 150; i++) {
dynamicWorld.stepSimulation(1.f / 60.f, 10);
for (int j = dynamicWorld.getNumCollisionObjects() - 1; j >= 0; j--) {
btCollisionObject obj = dynamicWorld.getCollisionObjectArray().atConst(j);
btRigidBody body = (btRigidBody) obj;
if (body != null && body.getMotionState() != null) {
Matrix4 trans = new Matrix4();
body.getMotionState().getWorldTransform(trans);
System.out.println(
"world pos " + j + " = " + trans.val[12] + " , " + trans.val[13] + ", " + trans.val[14]);
}
}
}
collisionShapes.clear();
dynamicWorld.dispose();
overlappingPairCache.dispose();
dispatcher.dispose();
collisionConfig.dispose();
}
Как второй персонаж относится к главному герою?
Что-то, что главный герой хотел бы сказать второму персонажу