mistervirtue

Member
  • Content count

    60
  • Joined

  • Last visited

Community Reputation

611 Good

About mistervirtue

  • Rank
    Member
  1. XNA - Making A Sprite Fire A Projectile

    Here is my code for the most part   --------- SpriteManager --------- public class SpriteManager : Microsoft.Xna.Framework.DrawableGameComponent { SpriteBatch spriteBatch; UserControlledSprite player; Texture2D testingRec; Texture2D projectileSprite; List<Sprite> spriteList = new List<Sprite>(); public SpriteManager(Game game) : base(game) { } protected override void LoadContent() { spriteBatch = new SpriteBatch(Game.GraphicsDevice); player = new UserControlledSprite(Game.Content.Load<Texture2D>(@"images/SmallHero"), Vector2.Zero, new Point(85, 97), 1, new Point(0, 0), new Point(1, 1), new Vector2(3, 3)); testingRec = Game.Content.Load<Texture2D>(@"images/testRec"); projectileSprite = Game.Content.Load<Texture2D>(@"images/fireblast"); base.LoadContent(); } public override void Initialize() { base.Initialize(); } public override void Update(GameTime gameTime) { player.Update(gameTime, Game.Window.ClientBounds); base.Update(gameTime); } public override void Draw(GameTime gameTime) { spriteBatch.Begin(); player.Draw(gameTime, spriteBatch); spriteBatch.Draw(testingRec,player.collisionRect ,Color.White); spriteBatch.End(); base.Draw(gameTime); } }   ----- My base Sprite Class ------- namespace ProjectGaslightKnights { abstract class Sprite { public Texture2D textureImage; protected Vector2 position; protected Point frameSize; int collisionOffset; public Point currentFrame; public Point sheetSize; int timeSinceLastFrame = 0; protected Vector2 speed; int milisecondsPerFrame; const int defaultMillisecondsPerFrame = 16; SpriteEffects myEffect; Texture2D testingRecTexture; public Sprite(Texture2D textureImage, Vector2 position, Point frameSize, int collisionOffset, Point currentFrame, Point sheetSize, Vector2 speed) : this(textureImage, position, frameSize, collisionOffset, currentFrame, sheetSize, speed, defaultMillisecondsPerFrame) { } public Sprite(Texture2D textureImage, Vector2 position, Point frameSize, int collisionOffset, Point currentFrame, Point sheetSize, Vector2 speed, int millisecondsPerFrame) { this.textureImage = textureImage; this.position = position; this.frameSize = frameSize; this.collisionOffset = collisionOffset; this.currentFrame = currentFrame; this.sheetSize = sheetSize; this.speed = speed; this.milisecondsPerFrame = milisecondsPerFrame; } public virtual void Update(GameTime gameTime, Rectangle ClientBounds) { timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds; if (timeSinceLastFrame > milisecondsPerFrame) { timeSinceLastFrame = 0; ++currentFrame.X; if (currentFrame.X >= sheetSize.X) { currentFrame.X = 0; ++currentFrame.Y; if (currentFrame.Y >= sheetSize.Y) { currentFrame.Y = 0; } } } } public virtual void Draw(GameTime gameTime, SpriteBatch spriteBatch) { spriteBatch.Draw(textureImage, position, new Rectangle(currentFrame.X * frameSize.X, currentFrame.Y * frameSize.Y, frameSize.X, frameSize.Y), Color.White, 0, Vector2.Zero, 1f, myEffect, 0); spriteBatch.Draw(testingRecTexture, collisionRect, Color.White); } public abstract Vector2 direction { get; } public Rectangle collisionRect { get { return new Rectangle( (int)position.X + collisionOffset, (int)position.Y + collisionOffset, frameSize.X - (collisionOffset * 2), frameSize.Y - (collisionOffset * 2)); } } internal void Update(GameTime gameTime) { throw new NotImplementedException(); } } } -------And my user Class ------- class UserControlledSprite : Sprite { SpriteEffects myEffect; public UserControlledSprite(Texture2D textureImage, Vector2 position, Point frameSize, int collisionOffset, Point currentFrame, Point sheetSize, Vector2 speed) : base(textureImage, position, frameSize, collisionOffset, currentFrame, sheetSize, speed) { } public UserControlledSprite(Texture2D textureImage, Vector2 position, Point frameSize, int collisionOffset, Point currentFrame, Point sheetSize, Vector2 speed, int millisecondsPerFrame) : base(textureImage, position, frameSize, collisionOffset, currentFrame, sheetSize, speed, millisecondsPerFrame) { } public override Vector2 direction { get { Vector2 inputDirection = Vector2.Zero; if (Keyboard.GetState().IsKeyDown(Keys.Left)) { inputDirection.X -= 1; } if (Keyboard.GetState().IsKeyDown(Keys.Right)) { inputDirection.X += 1; } if (Keyboard.GetState().IsKeyDown(Keys.Down)) { inputDirection.Y += 1; } if (Keyboard.GetState().IsKeyDown(Keys.Up)) { inputDirection.Y -= 1; } return inputDirection * speed; } } public override void Update(GameTime gameTime, Rectangle ClientBounds) { //Move the spite according to the direction property position += direction; //If the player is facing left, flip it horizontally if (direction.X < 0) { this.myEffect = SpriteEffects.FlipHorizontally; } //If The player is facing right, no effect if (direction.X > 0) { this.myEffect = SpriteEffects.None; } //If the player leaves bounds off the screen put it back in play if (position.X < 0) { position.X = 0; } if (position.Y < 0) { position.Y = 0; } if (position.X > ClientBounds.Width - (frameSize.X)) { position.X = ClientBounds.Width - (frameSize.X ); } if (position.Y > ClientBounds.Height - (frameSize.Y)) { position.Y = ClientBounds.Height - (frameSize.Y); } base.Update(gameTime, ClientBounds); } public override void Draw(GameTime gameTime, SpriteBatch spriteBatch) { spriteBatch.Draw(textureImage, position, new Rectangle(currentFrame.X * frameSize.X, currentFrame.Y * frameSize.Y, frameSize.X, frameSize.Y), Color.White, 0, Vector2.Zero, 1, myEffect, 0); } }   I feel like I am cheating though. This isn't a school project or anything but all my professers tell me that Programmers need to learn to solve their own problems. But I think problem solving should involve other people, see as most of us want to work with other programmers. Anyway I am trying to build it such that my UserClass will be able to fire projectiles. So i Think the way I am going to model my ProjecticleSprite with a it's own draw(), and Update() and not inherit from the base class sprite. Thanks for your help everyone.
  2. Still working on 2D platformer
  3. Hello Fellow GameDev'ers,   I am working on my personal project and I have hit a serious road block. I am trying to making the player fire projectiles, but I can't really make it work. I have searched online for tutorials, but I can't seem to find any that make use of SpriteManager like I am doing. I am trying to make it as Object-Oriented as possible but I don't really know what to do.   I currently have a base Sprite.cs, a UserControlled.cs, and now a ProjectileSprite.cs, and a game component called SpriteManager.cs. I figure should model my ProjectileSprite.cs similarly to my other sprites and then add it to the SpriteManager.cs. But I also don't know how to make it interact with the UserControlled.cs so it will shoot when you want it to.   Does GameDev.net have any resources on this kind of problem? If anyone can give me any hints/points/shoves in the right direction that would be awesome.
  4. Suggestions on what sould i do after second game "project"

    I would suggest you just keep working on your RPG in your spare time. It should grow as your tools and skills do. The more you learn how to do the more you should add into your game.
  5. Drawing A 2D Texture Border

    I actually just solved my own problem! I feel so good. My issue was I wasn't draw the testingRec in the SpriteManager. 
  6. Drawing A 2D Texture Border

    The code it self runs. All of my sprites appear and do the stuff they are supposed to do, but I can't borders I want to draw over them aren't being drawn.
  7. Drawing A 2D Texture Border

    Hello Fellow Gamedev'ers,   I need assistance drawing a border around my a texture for collision testing purposes. I have a Base Sprite class, a subclass UserSprite, and a game Component called SpriteManager. I am trying to draw a border around all of my textures so i can test collision, but I don't really know how. I have tried some stuff on my own but I can't really get anything to work.   My current plan of attack is as follows. I have the base Sprite Class get the collisionRectangle //This is under the base Sprite Class. I get the collision Rectangle here. public Rectangle collisionRect { get { return new Rectangle( (int)position.X + collisionOffset, (int)position.Y + collisionOffset, frameSize.X - (collisionOffset * 2), frameSize.Y - (collisionOffset * 2)); } }   I then have the draw method draw the sprite and the border public virtual void Draw(GameTime gameTime, SpriteBatch spriteBatch) { spriteBatch.Draw(textureImage, position, new Rectangle(currentFrame.X * frameSize.X, currentFrame.Y * frameSize.Y, frameSize.X, frameSize.Y),Color.White,0,Vector2.Zero,1f,myEffect,0); //I am trying have it draw both the sprite itself and the border around it. spriteBatch.Draw(testingRecTexture, collisionRect, Color.Green); }   and I then Load the files for sprite and the border in my spriteManager protected override void LoadContent() { spriteBatch = new SpriteBatch(Game.GraphicsDevice); player = new UserControlledSprite(Game.Content.Load<Texture2D>(@"images/Warlock"), Vector2.Zero,new Point(378,413), 10, new Point(0,0),new Point(1,1), new Vector2 (3,3)); testingRec = Game.Content.Load<Texture2D>(@"images/testRec"); base.LoadContent(); }   The code runs, but the border does not a apper. I am just trying have each texture have a green border around it. If i could get a nudge or a shove in the right direction, that would be awesome.
  8. The Total Beginner’s Guide to Better 2D Game Art

    This is a great article, I lots of great information for beginners like me. I am going to re-read it catch anything i missed
  9. XNA Code Help - Drawing Collision Rectangle

    I gave you one in my response above. Sorry about that dave, I am colorblind. Seeing that different shade of blue is hard for me when i am not on my home computer. My bad.
  10. XNA Code Help - Drawing Collision Rectangle

    Any code pointers would be nice.
  11. Hello fellow gamedev'ers,   I have question about drawing collision rectangles. For testing purposes i want to draw a thin rectangle around my sprite (like an overlay), but i am not sure how. Would i use a primative, or would i have to put a texutre around the collisionRect itself?    Any help would be appericated.
  12. XNA Code Help - Animation Error

    Thanks! I appericate the help and explanation. You were right it was my overload that was the problem.
  13. XNA Code Help - Animation Error

    I have a animation error.   I have a spritesheet(400*215px) and it contains two frames. One frame (198*215) with a characters eyes open and one frame with the charaters eyes closed. My problem is whenever I attempt to animate this sheet, my code makes the whole sheet appear. Could I please get some help? --------------------------------------------------------------- Global Variables Point frameSize = new Point(198, 215); // The Size of an Indivsual Frame Point currentFrame = new Point (0,0); // Start in the first in the squence Point sheetSize = new Point(2,1); // Number of Rows and Columns of the Sprite Sheet ---------------------------------------------------------------- Update() timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds; if (timeSinceLastFrame > millisecondsPerFrame) { //Animate the Knight timeSinceLastFrame -= millisecondsPerFrame; ++currentFrame.X; if (currentFrame.X >= sheetSize.X) { currentFrame.X = 0; ++currentFrame.Y; if (currentFrame.Y >= sheetSize.Y) { currentFrame.Y = 0; } } -------------------------------------------------------- Draw() spriteBatch.Draw(texture, new Rectangle ((currentFrame.X * frameSize.X), (currentFrame.Y*frameSize.Y), frameSize.X, frameSize.Y),Color.White); ----------------------------------------------------------   I am not sure what my problem is. I think it lies in the use of the point structs because it is drawing the whole texture file. But then again it could be in the draw but it seems pretty straight forward. Could I get some help?
  14. Current Project: Platformer
  15. I am still learning, I am getting better slowly.