Exemple #1
0
void Player::updateMissile()
{ 
	std::set<Missile*>::iterator i = mMissile.begin();
	while( i != mMissile.end() )
	{
		Missile* missile = *i;

		//if (missile->getMissilePhysics()->isCollided() && !missile->isExploded())
		//{
		//	missile->makeExplode();
		//}

		missile->update();

		if ( missile->getMissilePhysics()->isCollided() ||  missile->isMissileTick() ) 
		{
			i = mMissile.erase(i);

			mPhysicsWorld->removeObject(missile->getMissilePhysics());
			missile->getSceneNode()->removeAndDestroyAllChildren();
			mSceneMgr->destroySceneNode(missile->getSceneNode());

			delete missile;
		}
		else
		{
			i++;
		}
	}
}
Exemple #2
0
Missile* Player::fireMissile()
{
	// 총알 생성 //
	Missile *missile = new Missile(mSceneMgr);

	// 총알의 발사 방향 //
	Vector3 direction = getDirection();
	direction.normalise();
	btVector3 velocity = btVector3(direction.x, direction.y, direction.z) * 5000;

	// 총알의 생성 위치 //
	Vector3 Rotation = mPlayerNode->getPosition() - Vector3(0, 3, 0);

	missile->makeMissile( Rotation );
	missile->setVelocity( velocity );

	mPhysicsWorld->addObject( missile->getMissilePhysics() );

	// 불빛 // 
	mFireFlash->create( mWeaponNode, mWeaponNode->getPosition() + Vector3(5, -14, 38));

	mMissileTimer.reset();
	return missile;
}