C# ';particleEngine';被画在向量上

C# ';particleEngine';被画在向量上,c#,windows-phone-7,vector,xna,C#,Windows Phone 7,Vector,Xna,我用的是XNA和C 从我的particleMitter调用向量变量时出现问题。如果粒子是静止的或不运动的,我可以画得很好。当我有一个向量变量,它被设置为一个固定的位置(x,y),它可以在屏幕上绘制。但是,如果我有一个向量变量,它被设置为在x轴或y轴上移动,它根本不会绘制 声明变量: Vector2 shipPos; float shipMovement; ParticleEngine particleEngine; 还有一种方法,可以加载关于向量应该发生什么以及它应该如何表现的内容: publ

我用的是XNA和C

从我的
particleMitter
调用向量变量时出现问题。如果粒子是静止的或不运动的,我可以画得很好。当我有一个向量变量,它被设置为一个固定的位置(x,y),它可以在屏幕上绘制。但是,如果我有一个向量变量,它被设置为在x轴或y轴上移动,它根本不会绘制

声明变量:

Vector2 shipPos;
float shipMovement;
ParticleEngine particleEngine;
还有一种方法,可以加载关于向量应该发生什么以及它应该如何表现的内容:

public void loadEmitter(GameTime gameTime)
{
    shipMovement = 2f;
    shipPos.Y -= shipMovement;          
    particleEngine.EmitterLocation = new Vector2(shipPos.X,shipPos.Y);
}
我正试图让particleEngine跟踪船只的运动。我似乎无法做到的是,当我设定这一切发生时,让它画出来

其他信息:
ParticleEngine
本身就是一个类,基本上设置了一些关于我将要绘制的粒子的行为的参数。我还有其他屏幕显示
spritebatch
Begin
End
调用。除此之外,以下是我的主要类的代码:

namespace PlanetDrill2
{
class LaunchScreen : Screen
{
    Texture2D LaunchScreenTexture;
    Texture2D shipLaunch;

    Vector2 shipPos;
    float shipMovement;
    ParticleEngine particleEngine;

    Vector2 smokePos;

    public LaunchScreen(Game game, SpriteBatch batch, ChangeScreen changeScreen)
        : base(game, batch, changeScreen)
    {            
    }

    protected override void SetupInputs()
    {
        base.SetupInputs();
    }

    public override void Activate()
    {
        base.Activate();
    }

    public void LaunchShip()
    {
    }

    public void loadEmitter(GameTime gameTime)
    {
        shipMovement = 2f;
        shipPos.Y -= shipMovement;        
        particleEngine.EmitterLocation = new Vector2(shipPos.X,shipPos.Y);
    }

    protected override void LoadScreenContent(ContentManager content)
    {
        LaunchScreenTexture = content.Load<Texture2D>("launchTest");
        shipLaunch = content.Load<Texture2D>("shipLaunch");

        List<Texture2D> textures = new List<Texture2D>();
        textures.Add(content.Load<Texture2D>("smoketexture"));
        particleEngine = new ParticleEngine(textures, new Vector2(0, 0));
        base.LoadScreenContent(content);
    }

    protected override void UpdateScreen(GameTime gameTime, DisplayOrientation screenOrientation)
    {
        //if (gameTime.TotalGameTime.Seconds>10)
        //{
        //    changeScreenDelegate(ScreenState.UMA);
        //}


        loadEmitter(gameTime);
        particleEngine.Update();
        base.UpdateScreen(gameTime, screenOrientation);
    }

    protected override void DrawScreen(SpriteBatch batch, DisplayOrientation screenOrientation)
    {
        batch.Draw(LaunchScreenTexture, Vector2.Zero, Color.White);
        batch.Draw(shipLaunch, new Vector2(80, 450) +shipPos, Color.White);
        particleEngine.Draw(batch);
        base.DrawScreen(batch, screenOrientation);
    }

    protected override void SaveScreenState()
    {
        base.SaveScreenState();
    }
} // end class LaunchScreen
} // end namespace PlanetDrill2
命名空间PlanetDrill2
{
类启动屏幕:屏幕
{
纹理2D启动屏幕纹理;
船舶下水;
向量2-shipPos;
浮船运动;
微粒发动机微粒发动机;
向量2;
公共启动屏幕(游戏、SpriteBatch批量、ChangeScreen ChangeScreen)
:基本(游戏、批量、更改屏幕)
{            
}
受保护的覆盖无效设置输入()
{
base.SetupInputs();
}
公共覆盖无效激活()
{
base.Activate();
}
公共无效发射()
{
}
公共void loadEmitter(游戏时间游戏时间)
{
船舶移动=2f;
shipPos.Y-=船舶移动;
particleEngine.EmitterLocation=新矢量2(shipPos.X,shipPos.Y);
}
受保护的覆盖无效LoadScreenContent(ContentManager内容)
{
LaunchScreenTexture=content.Load(“launchTest”);
shipLaunch=content.Load(“shipLaunch”);
列表纹理=新列表();
添加(content.Load(“smoketexture”);
particleEngine=新particleEngine(纹理,新向量2(0,0));
基本。LoadScreenContent(内容);
}
受保护的覆盖无效更新屏幕(游戏时间游戏时间,显示方向屏幕方向)
{
//如果(游戏时间.总游戏时间.秒>10)
//{
//changeScreenDelegate(ScreenState.UMA);
//}
loadEmitter(游戏时间);
particleEngine.Update();
base.UpdateScreen(游戏时间、屏幕方向);
}
受保护的覆盖无效绘图屏幕(SpriteBatch批次,DisplayOrientation screenOrientation)
{
绘制(LaunchScreenTexture,Vector2.Zero,Color.White);
批量绘制(shipLaunch,新矢量2(80450)+shipPos,颜色为白色);
颗粒发动机抽(批);
底座、牵引屏(批量、屏幕定位);
}
受保护的覆盖无效SaveScreenState()
{
base.SaveScreenState();
}
}//结束类启动屏幕
}//结束命名空间PlanetDrill2
从这里开始

batch.Draw(shipLaunch, new Vector2(80, 450) +shipPos, Color.White);
particleEngine.Draw(batch);

看起来您绘制的是相对于[80450]的船舶,但您没有将此偏移应用于particleEngine。

particleEngine.EmitterLocation=new Vector2(100450)+shipPos谢谢!我意识到这一点,当你张贴它,我的船的起源是有点混乱开始,但这修复了它,我没有足够的代表点向上投票,但再次感谢哈哈