
Code clippings:
Character controller set:
CC riggid body:
let body = new AMMO.btPairCachingGhostObject();
body.setWorldTransform(transform);
body.setCollisionShape(colShape);
// DISABLE_DEACTIVATION == 4
body.setActivationState(4);
body.activate(true);
this.world.getBroadphase().getOverlappingPairCache().setInternalGhostPairCallback(new AMMO.btGhostPairCallback());
body.setCollisionFlags(body.getCollisionFlags() | btCollisionObjectCollisionFlags.CF_CHARACTER_OBJECT); // 16
this.world.addCollisionObject(body);
< /code>
cc collider: < /p>
let collider = new AMMO.btCylinderShape ( new AMMO.btVector3(metadata.params.radius, metadata.params.halfHeight, metadata.params.radius) );
< /code>
cc btkinematicaractercontroller: < /p>
let characterController = new AMMO.btKinematicCharacterController(
body,
collider,
0.35, //stepHeight
1 //upAxis
);
characterController .setUseGhostSweepTest(true);
characterController .setGravity(9.8 * 3); // default 9.8*3
characterController .setMaxSlope(Math.PI / 3); // default Math.PI / 4
this.world.addAction(characterController );
< /code>
Набор этажа:
Floor Riggid Body: < /p>
let mass = 0;
let motionState = new AMMO.btDefaultMotionState( transform );
let rbInfo = new AMMO.btRigidBodyConstructionInfo( mass, motionState, colShape, localInertia );
body = new AMMO.btRigidBody( rbInfo);
this.world.addRigidBody(body);
body.setCollisionFlags(body.getCollisionFlags() | btCollisionObjectCollisionFlags.CF_STATIC_OBJECT); // 1
< /code>
Более того, это проникновение происходит именно в нижней части контроллера персонажа. С стороны все касается, как и должно. < /P>
В этом примере динамические тела разбросаны. Их можно толкнуть, нажимая на них со стороны. Но если вы стоите наверху, происходит проникновение ..
p.s. Если мой вопрос казался неуместным или плохим, пожалуйста, не сразу же вкладывайте в мою репутацию негативного, лучше написать, и я исправим, прояснить утверждение.
Подробнее здесь: https://stackoverflow.com/questions/797 ... c-and-dyna