C# 让入侵者开枪

C# 让入侵者开枪,c#,xna,C#,Xna,我添加了一个专门用于导弹的类。代码如下所示: class Missile { Vector2 Position; public Missile(int XInitialPos, int YInitialPos) { Position = new Vector2(XInitialPos, YInitialPos); } public void Move() {

我添加了一个专门用于导弹的类。代码如下所示:

 class Missile
    {
        Vector2 Position;

        public Missile(int XInitialPos, int YInitialPos)
        {
            Position = new Vector2(XInitialPos, YInitialPos);
        }

        public void Move()
        {
            Position.Y = Position.Y - 8;
        }
        public void MoveMissile()
        {
            Position.Y = Position.Y + 8;
        }

        public Vector2 GetPosition()
        {
            return Position;
        }
}

我知道如何调用move方法来让发射器射击,但是,我不知道如何随机调用一些东西来让入侵者射击。任何帮助都将不胜感激。多谢各位

code which invokes launcher to shoot in the update method:
 if (MissileFired != null && MissileFired.GetPosition().Y < 20) MissileFired = null;

            if (Keyboard.GetState().IsKeyDown(Keys.Space) && MissileFired == null)
            {
                MissileFired = new Missile(LauncherXPos, 650);
             }
调用launcher在更新方法中射击的代码:
如果(MissileFired!=null&&MissileFired.GetPosition().Y<20)MissileFired=null;
if(Keyboard.GetState().IsKeyDown(Keys.Space)和&MissileFired==null)
{
MissileFired=新型导弹(发射装置XPOS,650);
}

您可以向入侵者添加一个名为
ShouldShootMissile
的方法。它可能会将游戏时间的表示形式作为参数(可能是
double
或XNA
GameTime
对象)。此函数将返回一个
bool

然后,它可以根据各种因素利用这些信息来决定入侵者是否有资格发射导弹。这些因素可能是一个恒定的因素,指示它可以发射的最大速率(每500毫秒一次),然后是一个可变性(250毫秒)。您可以使用标准随机数生成器来计算可变性,并根据这些条件返回true或false

也许是这样的:

    Random rand = new Random();
    double lastMissileFired = 0d;

    private bool ShouldFireMissile(double time)
    {
        double fixedDelay = 500d;
        double firingProbability = 0.1d

        if (time - lastMissileFired < fixedDelay)
            return false;

        if (rand.NextDouble() > firingProbability)
            return false;

        lastMissileFired = time;
        return true;
    }

嘿,谢谢你的回复。如果我让你提供一个示例代码,会不会要求太多?。谢谢。通常情况下,
入侵者
物体将决定何时发射导弹,而不是发射物本身。
if (invader.ShouldFireMissile())
    invader.FireMissile();