示例#1
0
/////// This enemy behavior seeks out the player ////////
/////// until they reach a set Y value at which  ////////
/////// point they simply fly straight.          ////////
void AI::enemy1Update(Enemy &enemy, GSP420::ABC *player, const float dt)
{
	// Check if enemy Y position is higher than half the game height
	if (enemy.getPosition().y > 0.0f) // TODO: Modify for exact game height constant
	{
		D3DXVECTOR3 tempVel;
		// Get new enemy direction based on player position
		tempVel = player->getPosition() - enemy.getPosition();
		D3DXVec3Normalize(&tempVel, &tempVel);

		// Multiply enemy direction by its speed to get its velocity
		tempVel *= ENEMY_SPEED;
		enemy.setVelocity(tempVel);
	}

	// Uncomment if needed
	//enemy.setPosition(enemy.getPosition() += enemy.getVelocity() * dt);

	// Check if enemy should fire a bullet
	float bFireRate = enemy.getBulletFireRate();
	enemy.setBulletFireRate(bFireRate -= dt);
	if (bFireRate <= 0.0f)
	{
		enemy.fireBullet(D3DXVECTOR3(0.0f, -5.0f, 0.0f)); // TODO: Modify for a fixed bullet speed constant
		enemy.setBulletFireRate(ENEMY_BULLET_FR);
	}
}
示例#2
0
//////// Boss moves down into game screen ////////
//////// then begins its attack run       ////////
void AI::enemyBossUpdate(Enemy &enemy, const float dt)
{
	// Move into game screen
	if (enemy.getPosition() < D3DXVECTOR3(0.0f, 20.0f, 0.0f)) // TODO: Modify for constant Y position value
	{
		D3DXVECTOR3 vel = D3DXVECTOR3(0.0f, -5.0f, 0.0f);
		enemy.setVelocity(vel);
		// Uncomment if needed
		//enemy.setPosition(enemy.getPosition() += vel * dt);
	}
	else
	{
		// Begin attack run
		// Fire bullets
		float bFireRate = enemy.getBulletFireRate();
		enemy.setBulletFireRate(bFireRate -= dt);
		if (bFireRate <= 0.0f)
		{
			float x = -20.0f;
			for (int i = 0; i < 4; i++)
			{
				enemy.fireBullet(D3DXVECTOR3(x, -20.0f, 0.0f));
				x += 10.0f;
			}

			enemy.setBulletFireRate(1.0f);
		}

		// Fire missiles
		float missFireRate = enemy.getMissileFireRate();
		enemy.setMissileFireRate(missFireRate -= dt);
		if (missFireRate <= 0.0f)
		{
			enemy.fireMissile(D3DXVECTOR3(0.0f, -20.0f, 0.0f));
			enemy.setMissileFireRate(10.0f);
		}

		// Fire mines
		// Cannot specify where to drop mine
		// Mines are listed as a pickup, are they intended to be picked up by the player?
		/*float mineFireRate = enemy.getMineFireRate();
		enemy.setMineFireRate(mineFireRate -= dt);
		if (mineFireRate <= 0.0f)
		{

		}*/
	}
}