void BossTimeOut::Fallingstone() { FallingStone* stone = FallingStone::create(); stone->setTag(20150924); stone->setPosition(randPos()); UIController::getInstance()->getPhysicsLayer()->addChild(stone); StartTiming(); }
Ogre::Vector3 RandomPosition::getRandPosition(int area) { Ogre::Vector3 randPos(0, tankOnGround, 0); setX(area, randPos); setZ(area, randPos); return randPos; }
cocos2d::Vec2 BossTimeOut::randPos() { int randNum = cocos2d::random(0,20); if (randNum == m_curRandPos) { randPos(); } m_curRandPos = randNum; auto ws = Director::getInstance()->getWinSize(); return Vec2(ws.width/20 * randNum + rand_minus1_1() * 10, ws.height + 70); }
void SteamDeathEffect::update(float dTime) { if (GET_GAME_MANAGER()->getMicroSecondTime() - m_StartTime < 2000) { auto player = GET_STAGE_MANAGER()->getPlayer(); int randNum = 20 - (GET_GAME_MANAGER()->getMicroSecondTime() - m_StartTime) / 100; int createNum = 1 + (GET_GAME_MANAGER()->getMicroSecondTime() - m_StartTime) / 400; if (rand() % randNum == 0) { for (int i = 0; i < createNum; i++) { float xPos = rand() % 20; if (player->getInfo().m_UpperDir == DIR_RIGHT) { xPos -= 30; } else { xPos += 10; } cocos2d::Point randPos(xPos, static_cast<float>(player->getInfo().m_Size.height / 2 - rand() % 10)); GET_EFFECT_MANAGER()->createEffect(ET_SMOKE, player->getPosition() + randPos)->enter(); } } } else if (GET_GAME_MANAGER()->getMicroSecondTime() - m_StartTime < 4000) { if (!m_MakeParalysis) { auto effect = GET_EFFECT_MANAGER()->createEffect(ET_PARALYSIS, getPosition()); effect->setChasingPlayer(true); effect->enter(); m_MakeParalysis = true; } } else { m_IsDead = true; } }
void BossTimeOut::Fallingstone() { //³å´Ì²»µôÂä bool isSpeedUp = GameData::getInstance()->getisSpeedUp(); if (isSpeedUp) { unschedule(schedule_selector(BossTimeOut::speedUp)); return; } FallingStone* stone = FallingStone::create(); stone->setPosition(randPos()); UIController::getInstance()->getPhysicsLayer()->addChild(stone); StartTiming(); }
void ParticleInstance::emitNewParticles(float p_DeltaTime) { DirectX::XMFLOAT3 tempPos = DirectX::XMFLOAT3(m_SysPosition.x, m_SysPosition.y, m_SysPosition.z); DirectX::XMFLOAT4 tempColor = m_SysBaseColor; m_AccumulatedTime += p_DeltaTime; const float timePerParticle = 1.f / m_ParticleEffectDef->particlesPerSec; //check if new particles are to be emitted or not while (m_AccumulatedTime > timePerParticle) { m_AccumulatedTime -= timePerParticle; if (m_ParticleList.size() >= m_ParticleEffectDef->maxParticles) { break; } //Velocity std::uniform_real_distribution<float> velDistributionX(-m_ParticleEffectDef->velocityDeviation.x, m_ParticleEffectDef->velocityDeviation.x); std::uniform_real_distribution<float> velDistributionY(-m_ParticleEffectDef->velocityDeviation.y, m_ParticleEffectDef->velocityDeviation.y); std::uniform_real_distribution<float> velDistributionZ(-m_ParticleEffectDef->velocityDeviation.z, m_ParticleEffectDef->velocityDeviation.z); DirectX::XMFLOAT3 randVel( m_ParticleEffectDef->velocitybase.x + velDistributionX(m_RandomEngine), m_ParticleEffectDef->velocitybase.y + velDistributionY(m_RandomEngine), m_ParticleEffectDef->velocitybase.z + velDistributionZ(m_RandomEngine)); DirectX::XMMATRIX tempRotationM = DirectX::XMMatrixRotationRollPitchYaw(m_SysRotation.y, m_SysRotation.x, m_SysRotation.z); DirectX::XMVECTOR tempVEC = DirectX::XMLoadFloat3(&randVel); tempVEC = DirectX::XMVector3Transform(tempVEC, tempRotationM); DirectX::XMStoreFloat3(&randVel, tempVEC); //Position std::uniform_real_distribution<float> posDistribution(-m_ParticleEffectDef->particlePositionDeviation, m_ParticleEffectDef->particlePositionDeviation); DirectX::XMFLOAT3 randPos( tempPos.x + posDistribution(m_RandomEngine), tempPos.y + posDistribution(m_RandomEngine), tempPos.z + posDistribution(m_RandomEngine)); //Life std::uniform_real_distribution<float> lifeDistribution(-m_ParticleEffectDef->maxLifeDeviation, m_ParticleEffectDef->maxLifeDeviation); float randMaxLife = m_ParticleEffectDef->maxLife + lifeDistribution(m_RandomEngine); //Color std::uniform_real_distribution<float> oneToOneDistribution(-1.f, 1.f); DirectX::XMFLOAT4 randColorOffset( tempColor.x + oneToOneDistribution(m_RandomEngine) * m_ParticleEffectDef->particleColorDeviation.x, tempColor.y + oneToOneDistribution(m_RandomEngine) * m_ParticleEffectDef->particleColorDeviation.y, tempColor.z + oneToOneDistribution(m_RandomEngine) * m_ParticleEffectDef->particleColorDeviation.z, tempColor.w + oneToOneDistribution(m_RandomEngine) * m_ParticleEffectDef->particleColorDeviation.w); //Put all the new data for the new particle into one container Particle tempParticle(randPos, randVel, randColorOffset, m_ParticleEffectDef->size, 0.f, randMaxLife); //Add the new particle to the others in the same system m_ParticleList.push_back(tempParticle); } }
//[-1,1] static float randf(){ return randPos() * 2.0f - 1.0f; }