Eu construi um simples exemplo que faz isso que você tá tentando fazer. Se você nao entendeu o código, você avisa o que não entendeu:
Este exemplo pode mostrar duas imagens, que são iguais, ao mesmo tempo. E também, tem a mesma fonte de imagem.
public class Sprite
{
public SpriteBatch SpriteBatch;
public Rectangle Rectangle;
public Texture2D Texture;
public Color Color;
public void Draw(GameTime gameTime)
{
this.SpriteBatch.Draw(this.Texture, this.Rectangle, this.Color);
}
}
public class Game1 : Microsoft.Xna.Framework.Game
{
private GraphicsDeviceManager graphics;
private SpriteBatch spriteBatch;
private Sprite minhaBala1;
private Sprite minhaBala2;
///<summary>
/// Essa será a mesma imagem utilizada, e os objetos minhaBala1 e minhaBala2,
/// terão como fonte de imagem, este objeto.
///</summary>
private Texture2D imagemDaBala;
public Game1()
{
this.graphics = new GraphicsDeviceManager(this);
this.Content.RootDirectory = "Content";
}
protected override void Initialize()
{
base.Initialize();
}
protected override void LoadContent()
{
this.spriteBatch = new SpriteBatch(GraphicsDevice);
this.imagemDaBala = this.Content.Load<Texture2D>("bala");
this.minhaBala1.SpriteBatch = this.spriteBatch;
this.minhaBala2.SpriteBatch = this.spriteBatch;
this.minhaBala1.Texture = this.imagemDaBala;
this.minhaBala2.Texture = this.imagemDaBala;
}
protected override void Update(GameTime gameTime)
{
//atualizações da bala1
//atualizações da bala2
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
this.graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
this.spriteBatch.Begin();
this.minhaBala1.Draw(gameTime);
this.minhaBala2.Draw(gameTime);
this.spriteBatch.End();
base.Draw(gameTime);
}
}