XNAとC#を使用しています。
からベクトル変数を呼び出すのに問題がありますparticleEmitter
。静止している場合や動いていない場合でも、パーティクルをうまく描画できます。そして、(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