hi all , i know i have posted in XNA but i feel this is just general C# so i am posting a different question here
i am trying to get my spaceship to shoot bullets,
i have created a new list which is from the bullets class i made.
here is my bullets class
and in my "action scene" i have passed the texture through a component from the main game1 class, and then i have a update bullets and a shoot methods in the action scene.
and then in the update of action scene i am handling the input so when the user presses the "B" button on controller it plays an explosion sound(using this sound just for testing will change once i get the bullets shooting sorted) and then triggers the shoot method
my problem is when i press B the explosion plays but the bullets dont appear or move or anything.
also im unsure how i made a bullets list and then when i shoot i create a new "newbullet" i dont understand how that newbullet adds to the bullet list ?
i am trying to get my spaceship to shoot bullets,
i have created a new list which is from the bullets class i made.
List<Bullets> bullets = new List<Bullets>();
here is my bullets class
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using RockRainEnhanced.Core;
namespace RockRainEnhanced
{
/// <summary>
/// This is a game component that implements IUpdateable.
/// </summary>
public class Bullets
{
protected SpriteBatch sbBatch;
public Texture2D bulletTexture;
public Vector2 bulletPosition;
public int YSpeed = 10;
public Vector2 bulletOrigin;
public Vector2 PlayerPosition;
public bool isVisible;
public PlayerIndex playerID;
Vector2 player1position;
protected List<Bullets> bullet;
public Bullets(Game game, ref Texture2D theTexture, PlayerIndex playerID)
{
bulletTexture = theTexture;
isVisible = false;
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(bulletTexture,bulletPosition , null, Color.White, 0f, bulletOrigin, 1f, SpriteEffects.None, 0);
}
}
}
and in my "action scene" i have passed the texture through a component from the main game1 class, and then i have a update bullets and a shoot methods in the action scene.
public void UpdateBullets()
{
foreach (Bullets bullet in bullets)
{
newbulletposition.Y += bullet.YSpeed;
if (Vector2.Distance(bullet.bulletPosition, player1.playerPosition) > 500)
bullet.isVisible = false;
}
for (int i = 0; i < bullets.Count; i++)
{
if (!bullets[i].isVisible)
{
bullets.RemoveAt(i);
i--;
}
}
}
public void Shoot()
{
Bullets newBullet = new Bullets(Game, ref bulletTexture, PlayerIndex.One);
newBullet.bulletPosition = Vector2.Zero ;
newBullet.isVisible = true;
}
and then in the update of action scene i am handling the input so when the user presses the "B" button on controller it plays an explosion sound(using this sound just for testing will change once i get the bullets shooting sorted) and then triggers the shoot method
GamePadState gamepadstate = GamePad.GetState(PlayerIndex.One);
if ( oldGamePadState.Buttons.B == ButtonState.Pressed && gamepadstate.Buttons.B == ButtonState.Released)
audio.Explosion.Play();
Shoot();
oldGamePadState = gamepadstate;
UpdateBullets();
my problem is when i press B the explosion plays but the bullets dont appear or move or anything.
also im unsure how i made a bullets list and then when i shoot i create a new "newbullet" i dont understand how that newbullet adds to the bullet list ?