Collision between GhostObj and GhostObj Problem

RavenAR
Posts: 1
Joined: Tue Oct 19, 2010 10:46 am

Collision between GhostObj and GhostObj Problem

Post by RavenAR »

Hi.
I use two Ghostobject(KinematicCharacter) for Player and enemy(zombie etc...whatever) in my project.
The problem is when Player walk to enemy, just go through. Nothing hanppen.
I still don't fully understand Bullet, so I just took Bullet sample code.

Of course I was testing Bullet sample code in Character_Demo.cpp.

Code: Select all

	btTransform startTransform;
	startTransform.setIdentity ();
	//startTransform.setOrigin (btVector3(0.0, 4.0, 0.0));
	startTransform.setOrigin (btVector3(10.210098,-1.6433364,16.453260));


	m_ghostObject = new btPairCachingGhostObject();//
	m_ghostObject->setWorldTransform(startTransform);///
	sweepBP->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
	btScalar characterHeight=1.75;
	btScalar characterWidth =1.75;
	btConvexShape* capsule = new btCapsuleShape(characterWidth,characterHeight);
	m_ghostObject->setCollisionShape (capsule);
	m_ghostObject->setCollisionFlags (btCollisionObject::CF_CHARACTER_OBJECT);

	btScalar stepHeight = btScalar(0.35);
	m_character = new btKinematicCharacterController (m_ghostObject,capsule,stepHeight);



	//another character
	btPairCachingGhostObject *ghostObject;
	ghostObject = new btPairCachingGhostObject();//
	ghostObject->setWorldTransform(startTransform);///
	sweepBP->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
	ghostObject->setCollisionShape (capsule);
	ghostObject->setCollisionFlags (btCollisionObject::CF_CHARACTER_OBJECT);
	btKinematicCharacterController *character;
	character = new btKinematicCharacterController (ghostObject,capsule,stepHeight);
untitled.jpg
And this is my character code.

Code: Select all

ghostObject= new btPairCachingGhostObject();
	btConvexShape* characterShape = new btCapsuleShape(characterWidth*physicsWorldScaling,characterHeight*physicsWorldScaling);
	sweepBP->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());

	btTransform trans;
	trans.setIdentity();
	trans.setOrigin(btPosition*physicsWorldScaling);
	ghostObject->setWorldTransform(trans);
	ghostObject->setCollisionShape(characterShape);
	ghostObject->setCollisionFlags (btCollisionObject::CF_CHARACTER_OBJECT);

	btScalar stepHeight = 20*physicsWorldScaling;
	int upAxis = 1;
	character = new btKinematicCharacterController(ghostObject,characterShape,stepHeight, upAxis);
	m_dynamicsWorld->addCollisionObject(ghostObject,btBroadphaseProxy::CharacterFilter, btBroadphaseProxy::StaticFilter|btBroadphaseProxy::DefaultFilter);
m_dynamicsWorld->addCharacter(character);
This code is world initialize code.

Code: Select all

	btVector3 worldMin(-1000,-1000,-1000);
	btVector3 worldMax(1000,1000,1000);
	btAxisSweep3* sweepBP = new btAxisSweep3(worldMin,worldMax);
	pairCache = sweepBP;

	btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver();
	constraintSolver=sol;

	m_dynamicsWorld  = new btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration);
	ICollisionEvents::SetInstance(this,m_dynamicsWorld);
	m_dynamicsWorld->setGravity(btVector3(0,-100*physicsWorldScaling,0));

	btOverlappingPairCallback* ghostPairCallback = new btGhostPairCallback();
	m_dynamicsWorld->getBroadphase()->getOverlappingPairCache()->setInternalGhostPairCallback(ghostPairCallback);
I dont know what can i do.
You do not have the required permissions to view the files attached to this post.