リストから敵をスポーンしようとしています。私はそうするために複数の方法を試しました。しかし、私はそれを機能させることができません。3秒ごとに敵をスポーンする簡単な方法はありますか? 編集
私はこのようにそれを生成しようとしました:問題:一度しか生成されません
protected void AdjustSpawnTimes(GameTime gameTime)
{
// If the spawn maximum time is > 500 milliseconds,
// decrease the spawn time if it's time to do so
// based on spawn-timer variables
if (enemySpawnMaxMilliseconds > 500)
{
timeSinceLastSpawnTimeChange += gameTime.ElapsedGameTime.Milliseconds;
if (timeSinceLastSpawnTimeChange > nextSpawnTimeChange)
{
timeSinceLastSpawnTimeChange -= nextSpawnTimeChange;
if (enemySpawnMaxMilliseconds > 1000)
{
enemySpawnMaxMilliseconds -= 100;
enemySpawnMinMilliseconds -= 100;
}
else
{
enemySpawnMaxMilliseconds -= 10;
enemySpawnMinMilliseconds -= 10;
}
}
}
}
そしてこのように:問題:再び一度スポーンする
private void SpawnEnemy()
{
Vector2 speed = Vector2.Zero;
Vector2 position = Vector2.Zero;
// Default frame size
Point frameSize = new Point(75, 75);
int screenWidth = GraphicsDevice.PresentationParameters.BackBufferWidth;
int screenHeight = GraphicsDevice.PresentationParameters.BackBufferHeight;
// Randomization:
// - Randomly choose which side of the screen to place the enemy
// - Randomly create a position along that side of the screen
// - Randomly choose a speed for the enemy
switch (rand.Next(4))
{
case 0: // Left to right
position = new Vector2(-frameSize.X,
(rand.Next(0, screenHeight - frameSize.Y)));
speed = new Vector2(rand.Next(needleMinV, needleMaxV),
0);
break;
case 1: // Right to left
position = new Vector2(screenWidth,
(rand.Next(0, screenHeight - frameSize.Y)));
speed = -new Vector2(rand.Next(needleMinV, needleMaxV),
0);
break;
case 2: // Bottom to top
position = new Vector2(rand.Next(0, screenWidth - frameSize.X),
screenHeight);
speed = -new Vector2(0,
(rand.Next(needleMinV, needleMaxV)));
break;
case 3: // Top to bottom
position = new Vector2(rand.Next(0, screenWidth - frameSize.X),
-frameSize.Y);
speed = new Vector2(0,
rand.Next(needleMinV, needleMaxV));
break;
}
これはスポーンしますが、update と draw メソッドをいじって動かしませんが、何も機能しないようです
List<Enemy> needleList = new List<Enemy>();
Texture2D needle;
float spawnTime = 10;
const float TIMER = 10;
bool spawnN = true;
更新中:
timer = (float)gameTime.TotalGameTime.TotalSeconds;
spawnTime -= (float)gameTime.ElapsedGameTime.TotalSeconds;
if (timer < 0)
{
foreach (Enemy needele in needleList)
{
spawnN = !spawnN;
needele.Update(gameTime);
spawnTime = TIMER;
}
ドロー中:
if (spawnN)
{
foreach (Enemy needele in needleList)
{
needele.Draw(gameTime, spriteBatch);
}
}