Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 随机繁殖敌人XNA 4.0(WP7)_C#_Windows Phone 7_Random_Xna - Fatal编程技术网

C# 随机繁殖敌人XNA 4.0(WP7)

C# 随机繁殖敌人XNA 4.0(WP7),c#,windows-phone-7,random,xna,C#,Windows Phone 7,Random,Xna,我正在用C和XNA为windows phone创建一个2d侧面滚动类游戏 我有一个角色动画,让它看起来像精灵在移动,然而背景和敌人是唯一移动的东西。 我已经加载了敌人的纹理,屏幕上的位置是静态的,所以这很好。 但我的问题是,我想以随机间隔繁殖这些敌人。 我已经设置了一个随机数生成器、一个int和一对TimeSpan变量 下面是我放在UpdateEndemies方法中的代码 注意:在Update中,我调用UpdateEmiesGameTime 我这里有一个问题,因为敌人的产卵不是随机的。它们在相同

我正在用C和XNA为windows phone创建一个2d侧面滚动类游戏

我有一个角色动画,让它看起来像精灵在移动,然而背景和敌人是唯一移动的东西。 我已经加载了敌人的纹理,屏幕上的位置是静态的,所以这很好。 但我的问题是,我想以随机间隔繁殖这些敌人。 我已经设置了一个随机数生成器、一个int和一对TimeSpan变量

下面是我放在UpdateEndemies方法中的代码

注意:在Update中,我调用UpdateEmiesGameTime

我这里有一个问题,因为敌人的产卵不是随机的。它们在相同的时间间隔内为特定的运行繁殖

我每次都使用断点和spawnSeconds以及Eneyspawntime更新,但仍然存在这个问题

任何帮助都将不胜感激。

random=newrandom

每次调用update函数时,都会创建一个新的Random实例。 这样做将导致随机函数生成相同的值,因为它将基于相同的种子

在更新函数之外实例化随机对象,可能在构造函数中。这样做将改进您的代码,并修复您的问题。

random=newrandom

每次调用update函数时,都会创建一个新的Random实例。 这样做将导致随机函数生成相同的值,因为它将基于相同的种子


在更新函数之外实例化随机对象,可能在构造函数中。这样做将改进您的代码,并修复您的问题。

假设每次更新都调用UpdateEmies,那么每次更新都会更改enemySpawnTime,这是没有意义的。您只应在敌人繁殖时更改它,即:

if (gameTime.TotalGameTime - previousSpawnTime > enemySpawnTime)
{
    // Add an Enemy
    AddEnemy();

    // Update the time left next enemy spawn
    previousSpawnTime = gameTime.TotalGameTime;
    var spawnSeconds = random.Next(1, 6); // random should be a member of the class
    enemySpawnTime = TimeSpan.FromSeconds(spawnSeconds); 
}

如前所述,只创建一次随机对象,例如在Initialize中,并使其成为类的成员。

假设每次更新时都调用UpdateEmies,则每次更新时都更改EneySpawnTime,这是没有意义的。您只应在敌人繁殖时更改它,即:

if (gameTime.TotalGameTime - previousSpawnTime > enemySpawnTime)
{
    // Add an Enemy
    AddEnemy();

    // Update the time left next enemy spawn
    previousSpawnTime = gameTime.TotalGameTime;
    var spawnSeconds = random.Next(1, 6); // random should be a member of the class
    enemySpawnTime = TimeSpan.FromSeconds(spawnSeconds); 
}

如前所述,只创建一次随机对象,例如在Initialize中,并使其成为类的成员。

我建议您的spawnSeconds+Eneyspawntime最好将其置于spawn条件中,然后您只设置一次随机。。否则,您将调用它的每一帧..将random设置为一个字段,例如private random rand=new random;lukas-我将它设置在顶部为Random Random,但是你不能在那里初始化它,所以我现在在initialize方法中这样做@BugFinder-我不完全确定你的意思?我建议你的spawnSeconds+Eneyspawntime最好放在spawn条件中,然后你只设置随机一次。。否则,您将调用它的每一帧..将random设置为一个字段,例如private random rand=new random;lukas-我将它设置在顶部为Random Random,但是你不能在那里初始化它,所以我现在在initialize方法中这样做@BugFinder-我不完全确定你的意思?感谢你的快速回复,我从更新中删除了random=new random,并将其放在initialize方法中。仍然有相同的问题。感谢快速回复,我从更新中删除了random=new random,并将其放在initialize方法中。仍然有同样的问题。哈,我写了完全一样的东西。我应该先读你的答案。我真的认为这就是问题所在。哈,我写了完全相同的东西。我应该先读你的答案。我真的认为这就是问题所在。