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++; } } }
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; }