快速问题人
在我的游戏中,我目前需要在屏幕底部产生并向上移动的物品。一旦它们到达屏幕顶部或与它们消失的玩家发生碰撞,并且应该沿着屏幕底部的X轴随机产生。第一个项似乎总是在随机点产生,但是,第二个对象似乎总是在与第一个产生相同的点上产生,尽管使用单独的方法调用产生。有任何想法吗?这是我正在使用的代码:
public void ReSpawn()
this.RandX = this.random.Next(30, 650);
this.Position.X = RandX;
this.Position.Y = 710;
if (Object1.Position.Y <= -25) //If item reaches top of screen
Object1.ReSpawn();
if (Object1.rectangle.Intersects(Player.rectangle)) //Collision with player
Object1.ReSpawn();
if (Object2.Position.Y <= -25) //If item reaches top of screen
Object2.ReSpawn();
if (Object2.rectangle.Intersects(Player.rectangle)) //Collision with player
Object1.ReSpawn();
宣布使用:
public Random random = new Random();
public int RandX;
答案 0 :(得分:5)
您的两个对象可能没有共享Random
个对象。因此,两个对象将生成相同的随机数序列。
在两个对象之间共享一个Random
对象,它们应该生成不同的值。
修改强>
使random
静态,以便所有对象都使用它。
public static Random random = new Random();
答案 1 :(得分:0)
尝试播种随机数生成器
Random rand1 = new Random((int) DateTime.Now.Ticks & 0x0000FFFF);
答案 2 :(得分:-1)
如果你真的想要一个好的随机数生成器,我推荐System.Security.Cryptography.RandomNumberGenerator
而不是Random
。但是,不确定它是否会影响性能。