C# ';particleEngine';被画在向量上
我用的是XNA和C 从我的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
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代码>谢谢!我意识到这一点,当你张贴它,我的船的起源是有点混乱开始,但这修复了它,我没有足够的代表点向上投票,但再次感谢哈哈