标签: monogame

如何规范 Monogame 中的对角线移动

我有一些简单的运动代码,唯一的问题是对角线运动比 X 和 Y 运动更快。我知道如何在 Unity 中标准化这一点,但不知道如何在 Monogame 中标准化。

private Vector2 _position;

protected override void Update(GameTime gameTime)
{
     

    if (Keyboard.GetState().IsKeyDown(Keys.W))
    {
        _position.Y -= 1;
    }

    if (Keyboard.GetState().IsKeyDown(Keys.S))
    {
        _position.Y += 1;
    }

    if (Keyboard.GetState().IsKeyDown(Keys.A))
    {
        _position.X -= 1;
    }

    if (Keyboard.GetState().IsKeyDown(Keys.D))
    {
        _position.X += 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该是所有相关代码,如果您需要更多,请告诉我。

c# monogame

1
推荐指数
1
解决办法
1268
查看次数

XNA 加载 2D 纹理的最佳方式;单一游戏

我正在制作一个测试 xna 游戏作为学习练习,我有一个关于使用 2d 纹理的小问题。基本上,游戏是从文本地图文件中获取的不同“图块”的网格。我基本上只是在初始化关卡时解析文件并创建不同图块类型的矩阵。该关卡本质上是一桶墙砖和钉子。所以本质上,有很多墙砖和多个尖钉砖,然后还有很多空砖。然而,有四种类型的墙砖和钉状纹理来覆盖不同的方向。

我的问题是加载每个图块纹理的最佳方法是什么?我是否为每个图块加载单独的纹理?即当我创建一个图块时,向它传递一个texture2d,我可以同时绘制和加载纹理。这似乎是一个好方法,但是我必须单独加载每个图块纹理,这似乎很浪费。

我能想到的另一个选择是在图块结构中使用静态纹理,然后简单地将此纹理加载为具有不同墙壁和尖峰的图块图集。这样我只加载单个纹理,然后在绘制时我只需将一个矩形移动到精灵内适当图块的区域。

我不确定从性能角度来看,这些方法中哪一种是最佳的,或者是否有其他方法?

提前致谢

xna 2d texture2d xna-4.0 monogame

0
推荐指数
1
解决办法
1394
查看次数

Monogame性能更新逻辑非常糟糕,为什么?

我正在运行的程序和版本:

  • Windows 7的
  • Visual Studio 2012专业版
  • Monogame 3.2
  • OpenGL项目

问题:当我在下面的循环中更新我的游戏时,我打开任务管理器,看到该程序占用了25个CPU!这太过分了.

循环:

protected override void Update(GameTime gameTime)
    {
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            Exit();
        // TODO: Add your update logic here
        if (angleCounter != 359)
            angleCounter++;
        else
            angleCounter = 0;

        base.Update(gameTime);
    }
Run Code Online (Sandbox Code Playgroud)

循环使角度(度)增加,使得我正在绘制的图像(png)不断旋转

绘图部分:

protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);
        spriteBatch.Begin();
        // TODO: Add your drawing code here
        Vector2 location = new Vector2(200, 200);
        Rectangle sourceRectangle = new Rectangle(0, 0, sprite.Width, sprite.Height);
        Vector2 origin = new Vector2(sprite.Width / 2, …
Run Code Online (Sandbox Code Playgroud)

c# performance draw monogame

0
推荐指数
1
解决办法
1634
查看次数

平铺对象层将位置绘制到错误的位置

我知道这个问题对那些熟悉平铺和单一游戏的人来说非常具体,所以我会尽量做到尽可能彻底.我已经在这个问题上工作了15个多小时,我很绝望.

我正在尝试使用Tiled的对象层将精灵绘制到屏幕上.我已经创建了一个新的对象图层,为它绘制了一些矩形,并添加了一个我在LoadContent方法中引用的自定义属性.

这是绘制到对象图层

这是我的LoadContent方法:

protected override void LoadContent()
    {
        // Create a new SpriteBatch, which can be used to draw textures.
        spriteBatch = new SpriteBatch(GraphicsDevice);

        mymap = Content.Load<TiledMap>("Misc/newmap");
        enemyShip = Content.Load<Texture2D>("Enemies/enemyship");

        //TiledMapObject[] islands = mymap.GetLayer<TiledMapObjectLayer>("Islands").Objects;
        ship_sprite = Content.Load<Texture2D>("character/wooden_ship");

        Texture2D texture = Content.Load<Texture2D>("character/anima2");
        animatedSprite = new AnimatedSprite(texture, 1, 2);

        font = Content.Load<SpriteFont>("Misc/londrinasolid");

        Song song = Content.Load<Song>("Music/Chad_Crouch_-_Stellars_Jay");
        MediaPlayer.Volume = 0.7F;
        MediaPlayer.Play(song);

        TiledMapObject[] littleBoats = mymap.GetLayer<TiledMapObjectLayer>("SmallBoats").Objects;
        foreach (var en in littleBoats)
        {
         string type;
            en.Properties.TryGetValue("type", out type);
            if (type == "smallboat")
            {                    
                Enemy.enemies.Add(new SmallBoat(en.Position)); …
Run Code Online (Sandbox Code Playgroud)

c# xna monogame tiled

0
推荐指数
1
解决办法
174
查看次数

2018 年 Monogame 还值得使用吗

我知道有很多帖子讨论这个问题,但现在已经过去几年了。

我开始使用 Unity 并想开始开发 2D 游戏。Unity 是一个非常好的引擎,能够处理 2D,但显然这个游戏引擎是为 3D 设计的。

其他引擎或框架可能使用脚本语言,但我想使用 C# 作为我的主要语言。我知道 Godot 支持 C#,但它专注于 GDScript。

我刚刚读到 Monogame,想知道它是否仍然值得使用或已经过时。我说的过时是指它不再被维护或者没有多少人再使用它。

game-engine monogame

0
推荐指数
1
解决办法
2917
查看次数

XNA 4.0 C# 限制 FPS

我试图限制 Monogame XNA 项目的“每秒帧数”,但我的 limitFrames函数不准确。

例如,我的项目在没有限制器的情况下以 60 fps 运行。但是,当我使用限制器并将frameRateLimiter变量设置为每秒 30 帧时,该项目的最大 fps 约为 27。

有人能找到解决方案吗?

帧限制器代码

private float frameRateLimiter = 30f;
// ...

protected override void Draw(GameTime gameTime)
{
    float startDrawTime = gameTime.TotalGameTime.Milliseconds;
    limitFrames(startDrawTime, gameTime);
    base.Draw(gameTime);
}

private void limitFrames(float startDrawTime, GameTime gameTime)
{
    float durationTime = startDrawTime - gameTime.TotalGameTime.Milliseconds;
    // FRAME LIMITER
    if (frameRateLimiter != 0)
    {
        if (durationTime < (1000f / frameRateLimiter))
        {
            // *THE INACCERACY IS MIGHT COMING FROM THIS LINE*
            System.Threading.Thread.Sleep((int)((1000f / frameRateLimiter) …
Run Code Online (Sandbox Code Playgroud)

c# xna frame-rate monogame

0
推荐指数
1
解决办法
2257
查看次数

单击后如何在 Monogame 中删除精灵?

我正在编写 ac# monogame。我有一个英雄,他可以射击。我想要那个,当他击中一个精灵(这里:一个简单的球)时,这个球应该在地图上被删除。

这是我的绘画方法

public void Draw(GameTime gameTime)
{
            mMap.Draw(ScreenManager.mSprites);
            ScreenManager.mSprites.Begin();
            ScreenManager.mSprites.Draw(mTest, mHeroPos, Color.White);
            ScreenManager.mSprites.Draw(mBall, new Rectangle(120, 120, 50, 50), Color.White);
            DrawEffects();
            ScreenManager.mSprites.End();
}
Run Code Online (Sandbox Code Playgroud)

我没有删除地图上球的代码,因为我不知道它。我有更多代码,但在这里展示它太多了,我认为这对我的问题并不重要。在这段代码中,我的英雄可以在精灵上行走和射击。一切都很完美。总而言之,我的问题是,我想用精灵射击,然后精灵应该消失。感谢帮助

c# drawing monogame spritebatch

0
推荐指数
1
解决办法
452
查看次数

Moving a camera in XNA, C#

I am trying to make a scrolling level to a test game I am doing as a learning exercise. I have created a map containing lots of tiles which are drawn according to their position in an array. I basically want the camera to scroll down the level, but at the moment it just frantically shakes up and down a little bit.

I have a camera class which is just a blank static class containing a static vector2 for the …

c# xna camera xna-4.0 monogame

-1
推荐指数
1
解决办法
4530
查看次数

C#最好编写RPG,xna或monogame

我想制作一个RPG并想知道我是否应该使用Xna或Monogame来编码它.什么会有更好的结果或更简单的代码.我研究了一下但仍然无法决定.

c# xna monogame

-1
推荐指数
1
解决办法
395
查看次数

游戏开发引擎

抱歉我的问题,我知道这是一个愚蠢的问题。我想开始游戏开发,我应该从哪里开始?我应该从 libGDX、Love2D 还是 Monogame 开始。我知道如何使用这种语言(JAVA、LUA 和 C#)进行编程。我只是想从那些比我更有经验的人那里获得意见。请帮助我。谢谢

game-engine love2d libgdx monogame

-1
推荐指数
1
解决办法
654
查看次数

C#XNA和monogame.这值得么?

我已经知道我可以使用XNA使C#与Mac/Linux通过monogame兼容,但是monogame是从C#单独开发的,所以没有人知道它们是否能跟上C#的开发?

使用C#是否值得冒险,或者我应该安全地使用Java编程以实现跨平台兼容性吗?

c# java xna monogame

-2
推荐指数
1
解决办法
2274
查看次数

gameTime.ElapsedGameTime.TotalSeconds的值是什么?

我想知道gameTime.ElapsedGameTime.TotalSeconds一秒钟的确切价值是什么?

c# mono xna monodevelop monogame

-2
推荐指数
1
解决办法
3270
查看次数

当我打开子窗体时如何禁用主窗体

我一直在到处寻找,但没有找到在子窗体打开时禁用主窗体的代码(我可能只是措辞错误。就像当您打开文件时,如果您尝试单击应用程序打开闪光灯并发出声音。

当我处于非主要形式的第二种形式时,如何禁用应用程序?

编辑:所以这就是放置它的地方,因为每个人都在问

        private void newToolStripMenuItem_Click(object sender, EventArgs e)
    {
        New_File newFile = new New_File();
        if (newFile.ShowDialog() == DialogResult.OK)
        {

        }
    }
Run Code Online (Sandbox Code Playgroud)

编辑 2:花费 16 秒打开文件,如下所示:

既然你拿走了我所有的代表,我必须发布一个链接http://puu.sh/aDBF4/9d7fd31926.png

我仍然不明白为什么当我不知道 ShowDialog 是什么的时候你们仍然对我投反对票。

c# winforms monogame

-3
推荐指数
1
解决办法
1460
查看次数