Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单对策中的圆形粒子效应_C#_Monogame_Particles - Fatal编程技术网

C# 单对策中的圆形粒子效应

C# 单对策中的圆形粒子效应,c#,monogame,particles,C#,Monogame,Particles,我不熟悉C#和单人游戏,我正在尝试创造一种“心灵”能力的效果,用户按下一个键,他们的位置会发出一个圆形光环爆炸。我只是想在设置位置之前让实际的爆炸发生,但我的问题是当我试图让所有的粒子从圆的原点向外移动时 我从来没有研究过圆,只研究过矩形,所以我对这方面的知识非常基础。你可能会从youtube频道识别出代码,这是因为我一直在尽可能地学习,大部分时间我都会去youtube,因为视频演示效果最好,但我离题了 这是到目前为止我为粒子生成器编写的代码 namespace Particles { clas

我不熟悉C#和单人游戏,我正在尝试创造一种“心灵”能力的效果,用户按下一个键,他们的位置会发出一个圆形光环爆炸。我只是想在设置位置之前让实际的爆炸发生,但我的问题是当我试图让所有的粒子从圆的原点向外移动时

我从来没有研究过圆,只研究过矩形,所以我对这方面的知识非常基础。你可能会从youtube频道识别出代码,这是因为我一直在尽可能地学习,大部分时间我都会去youtube,因为视频演示效果最好,但我离题了

这是到目前为止我为粒子生成器编写的代码

namespace Particles
{
class ParticleGenerator
{
    Texture2D texture;
    float spawnWidth;
    float density;

    List<Particles> particles = new List<Particles>();

    float timer;

    public ParticleGenerator(Texture2D newTexture, float newSpawnWidth, float newDensity)
    {
        texture = newTexture;
        spawnWidth = newSpawnWidth;
        density = newDensity;

    }

    public void createParticle(GraphicsDevice graphics)
    {

        particles.Add(new Particles(texture, new Vector2(graphics.Viewport.Width / 2 , graphics.Viewport.Height /2), new Vector2(5, 1)));

    }

    public void Update(GameTime gameTime, GraphicsDevice graphics)
    {
        timer += (float)gameTime.ElapsedGameTime.TotalSeconds;
        while (timer > 0)
        {
            timer -= 1f / density;
            createParticle(graphics);
        }

        for (int i = 0; i < particles.Count; i++)
        {
            particles[i].Update();
            if (particles[i].Position.Y > graphics.Viewport.Height)
            {
                particles.RemoveAt(i);
                i--;
            }
        }
    }

    public void Draw(SpriteBatch spriteBatch)
    {
        foreach (Particles particle in particles)
        {
            particle.Draw(spriteBatch);
        }
    }

}
名称空间粒子
{
类分词生成器
{
纹理2D纹理;
浮动宽度;
漂浮密度;
列表粒子=新列表();
浮动定时器;
公共参与者生成器(纹理2D新纹理、浮动新闻宽度、浮动新密度)
{
纹理=新纹理;
spawnWidth=newSpawnWidth;
密度=新密度;
}
公共void createParticle(图形设备图形)
{
添加(新粒子(纹理,新矢量2(graphics.Viewport.Width/2,graphics.Viewport.Height/2),新矢量2(5,1));
}
公共无效更新(游戏时间游戏时间,图形设备图形)
{
计时器+=(浮点)gameTime.ElapsedGameTime.TotalSeconds;
同时(计时器>0)
{
定时器-=1f/密度;
创建粒子(图形);
}
对于(int i=0;igraphics.Viewport.Height)
{
颗粒去除(i);
我--;
}
}
}
公共作废抽签(SpriteBatch SpriteBatch)
{
foreach(粒子中的粒子)
{
粒子绘制(spriteBatch);
}
}
}
}


非常感谢您的帮助。

我建议您将此贴在monogame开发者更容易看到的地方。@SomeGuy是的,我会这样做,谢谢您提供的信息:)