C#Random()不能随机工作

AJC*_*Col 3 c# random xna

快问问题

在我的游戏中,我目前需要在屏幕底部生成并向上移动的项目.一旦它们到达屏幕顶部或与它们消失的玩家发生碰撞,并且应该沿着屏幕底部的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(); 
Run Code Online (Sandbox Code Playgroud)

声明使用:

    public Random random = new Random();
    public int RandX;
Run Code Online (Sandbox Code Playgroud)

Mat*_*ser 5

您的两个对象可能不共享Random对象.因此,两个对象将生成相同的随机数序列.

Random在两个对象之间共享一个对象,它们应该生成不同的值.

编辑:

使random静态所有对象都使用它.

public static Random random = new Random();
Run Code Online (Sandbox Code Playgroud)