通过鼠标单击添加 2D 精灵

本文关键字:2D 精灵 添加 单击 鼠标 | 更新日期: 2023-09-27 17:57:06

我刚刚开始用C#/XNA编码我在 XNA 中制作了一个非常简单的小程序,它是一个绘制的矩形,里面有 3 个随机生成的球,球是在它们自己的类中定义的,我一直在遵循本教程http://www.bluerosegames.com/brg/xna101.aspx

球是使用

int ballCount = 3;

我想做的是使鼠标单击将 int 增加 1,向屏幕添加另一个球

我的代码看起来像这样,但我不确定它是否正确/可能

         mouseStateCurrent = Mouse.GetState();
        if (mouseStateCurrent.LeftButton == ButtonState.Pressed &&
            mouseStatePrevious.LeftButton == ButtonState.Released)
        {
            ballCount = ballCount+1;
        }
        mouseStatePrevious = mouseStateCurrent;

任何帮助建议都会有所帮助:)

我正在使用代码来绘制看起来像这样的球

        spriteBatch.Begin();
        spriteBatch.Draw(debugColor, TextBox, Color.White);
        spriteBatch.Draw(background, backgroundRectangle, Color.White);
        foreach (BouncingBall ball in balls)
        {
            ball.Draw(spriteBatch);
        }
        spriteBatch.End();
        base.Draw(gameTime);

是否可以对其进行编辑以获得"单击以添加球"效果?

通过鼠标单击添加 2D 精灵

如果balls定义为Game类可以访问的List<BouncingBall>,则在MouseClick事件中可以使用balls.Add(new BouncingBall()); . 因为您使用的是foreach循环,所以它将增加每个循环的球数,并且您的Draw代码已经可以满足添加的任何新balls

在你的 draw 方法中,你可以做类似的事情

 protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);
        spriteBatch.Begin();
      for(var i=0;i<ballcount;i++)
      {
          spriteBatch.Draw()
      }
        spriteBatch.End();
        base.Draw(gameTime);
    }