Sprite.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Microsoft.Xna.Framework;
  2. using Microsoft.Xna.Framework.Graphics;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using Tutorial010.Models;
  9. namespace Tutorial010.Sprites
  10. {
  11. public class Sprite
  12. {
  13. protected Texture2D _texture;
  14. public Vector2 Position;
  15. public Vector2 Velocity;
  16. public float Speed;
  17. public Input Input;
  18. public Rectangle Rectangle
  19. {
  20. get
  21. {
  22. return new Rectangle((int)Position.X, (int)Position.Y, _texture.Width, _texture.Height);
  23. }
  24. }
  25. public Sprite(Texture2D texture)
  26. {
  27. _texture = texture;
  28. }
  29. public virtual void Update(GameTime gameTime, List<Sprite> sprites)
  30. {
  31. }
  32. public virtual void Draw(SpriteBatch spriteBatch)
  33. {
  34. spriteBatch.Draw(_texture, Position, Color.White);
  35. }
  36. #region Colloision
  37. protected bool IsTouchingLeft(Sprite sprite)
  38. {
  39. return this.Rectangle.Right + this.Velocity.X > sprite.Rectangle.Left &&
  40. this.Rectangle.Left < sprite.Rectangle.Left &&
  41. this.Rectangle.Bottom > sprite.Rectangle.Top &&
  42. this.Rectangle.Top < sprite.Rectangle.Bottom;
  43. }
  44. protected bool IsTouchingRight(Sprite sprite)
  45. {
  46. return this.Rectangle.Left + this.Velocity.X < sprite.Rectangle.Right &&
  47. this.Rectangle.Right > sprite.Rectangle.Right &&
  48. this.Rectangle.Bottom > sprite.Rectangle.Top &&
  49. this.Rectangle.Top < sprite.Rectangle.Bottom;
  50. }
  51. protected bool IsTouchingTop(Sprite sprite)
  52. {
  53. return this.Rectangle.Bottom + this.Velocity.Y > sprite.Rectangle.Top &&
  54. this.Rectangle.Top < sprite.Rectangle.Top &&
  55. this.Rectangle.Right > sprite.Rectangle.Left &&
  56. this.Rectangle.Left < sprite.Rectangle.Right;
  57. }
  58. protected bool IsTouchingBottom(Sprite sprite)
  59. {
  60. return this.Rectangle.Top + this.Velocity.Y < sprite.Rectangle.Bottom &&
  61. this.Rectangle.Bottom > sprite.Rectangle.Bottom &&
  62. this.Rectangle.Right > sprite.Rectangle.Left &&
  63. this.Rectangle.Left < sprite.Rectangle.Right;
  64. }
  65. #endregion
  66. }
  67. }