ゲーム、より具体的にはメイン プレーヤーとの衝突の実装に問題があります (セットアップしたボックスと衝突すると、遠くに跳ね返ります)。これは、ビューアーをセットアップするためのコードです。
CollisionShape myCol = new CylinderShape(new javax.vecmath.Vector3f(0.4f, 0.9f, 0.4f)); DefaultMotionState motion = new DefaultMotionState(new Transform(new Matrix4f(new Quat4f(0, 0, 0, 1), new javax.vecmath.Vector3f(0, 33, 0), 1f))); javax.vecmath.Vector3f fallInertia = new javax.vecmath.Vector3f(0, 0, 0); //myCol.calculateLocalInertia(0, fallInertia); RigidBodyConstructionInfo cInfo = new RigidBodyConstructionInfo(1, motion, myCol, fallInertia); self_Col = new RigidBody(cInfo); self_Col.setFriction(1f); self_Col.setRestitution(1f); self_Col.setDamping(0.04f, 0.1f);
そして、これは物理世界のセットアップです:
AxisSweep3 pairCache = new AxisSweep3(new javax.vecmath.Vector3f(-10000, -10000, -10000), new javax.vecmath.Vector3f(10000, 10000, 10000)); DefaultCollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration(); CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration); SequentialImpulseConstraintSolver solver = new SequentialImpulseConstraintSolver(); detectionWorld = new DiscreteDynamicsWorld(dispatcher, pairCache, solver, collisionConfiguration); detectionWorld.setGravity(new javax.vecmath.Vector3f(0, -2f, 0));
プレイヤーを動かして新しい位置をコリジョン ボックスに適用し、物理ステップを実行して位置を新しいコリジョン ボックスの位置に設定しようとしています。したがって、基本的には、位置を取る 2 つのベクトルがあります。
編集:誰か?私はまだこの問題を抱えています