I'm having trouble working out what I need to do in order to have a 2D BoundingRectangle for a sprite object in my game rotate and update position depending on which way the user wants the sprite to travel.
I draw out the sprite with it's rotation and scale values like so:
spriteBatch.Draw(texture, position, null, Color.White, rotation, origin, scale, SpriteEffects.None, 1f);
My current setup for getting the BoundingRectangle is:
public Rectangle BoundingRectangle
{
get { return new Rectangle((int)position.X, (int)position.Y, texture.Width, texture.Height); }
}
The above is very basic and obviously won't rotate with the sprite. I've read a few QA posts and tried various things but none of them seem to achieve what I'm after or create very odd behaviours.
I'd be grateful for some suggestions on what I need to do.
The Rectangle class doesn't contain rotation information, so you need some structure to contain that.
A good choice would be to return a list of four points, which are based on the rectangle you are now returning and the rotation applied to it.
You can apply apply a rotation on a set of points using the Matrix class like so:
If you want to rotate around a certain point, lets say the center of your sprite, a translation should also be done:
Be sure to check out all the other transformations that can be done with a matrix, matrices are core elements in game/graphics development.