XNA随机速度和位置生成

时间:2014-05-02 17:34:52

标签: c# random xna sprite xna-4.0

我正在研究一个2d项目,我需要实现的一件事是: 3个精灵(海马)并且在创作过程中我应该根据可视屏幕(-400; 0; 400)分配随机x和随机y坐标。它们也应该被指定为5到10之间的随机速度。 海马应从中心点向上移动100px并向下移动100px。 所以我的问题是:如何?!我尝试使用随机 - 随机位置=新的随机();但是当我尝试使用它时,没有任何事情发生。

2 个答案:

答案 0 :(得分:1)

Random rnd = new Random()
rnd.Next(5, 10+1) // Exclusive upper bound

要生成新号码,只需重复使用rnd.Next(min, max+1)

即可

MSDN:http://msdn.microsoft.com/en-us/library/system.random.aspx

答案 1 :(得分:1)

我希望一些示例代码能让您朝着正确的方向前进。 这是在单元测试项目中编写的代码。由于您没有给出示例代码,这是我能为您做的最好的。

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MyNamespace
{
    [TestClass]
    public class OtherTests
    {
        readonly Random rand = new Random();

        [TestMethod]
        public void CoordTest()
        {
            double width = 400;
            double height = 400;
            double centerScreenX = width / 2;
            double centerScreenY = height / 2;

            double minSpeed = 5;
            double maxSpeed = 10;

            double offsetRangeX = 0;
            double offsetRangeY = 100; // Only up and down.


            List<double[]> vectors = new List<double[]>();

            int spritesToGenerate = 3;
            while (spritesToGenerate-- > 0)
            {
                vectors.Add(new[]
                {
                    centerScreenX + rand.NextDouble() * offsetRangeX * 2 - offsetRangeX,
                    centerScreenY + rand.NextDouble() * offsetRangeY * 2 - offsetRangeY,
                    rand.NextDouble() * (maxSpeed - minSpeed) + minSpeed,
                    rand.NextDouble() * (maxSpeed - minSpeed) + minSpeed
                });
            }
            Console.WriteLine(string.Join("\r\n", vectors.Select(v => string.Join("\t", v))));
        }
    }
}