Zdravím narazil jsem na problém se kterým si už vážně nevím rady.
Mám oběkt, jeho velikost a pozici si pamatuji v proměnné Rectangle. Oběkt se pohybuje ve směru float X, float Y, a zároveň ho chci rotovat v jeho středu (Vector2 Midopoint) . Problém je že oběkt se během rotace pouze netočí, ale obíhá kolem bodu
public Texture2D texture;
float rotation;
float circle = MathHelper.Pi* 2;
float smerX;
float smerY;
public Rectangle SizeAndPos;
public Meteority(Texture2D texture, Vector2 position, float smerX, float smerY, Rectangle Size, int health)
{
this.texture = texture;
this.SizeAndPos = new Rectangle((int)position.X,(int)position.Y, Size.Width, Size.Height);
this.smerX = smerX;
this.smerY = smerY;
rotation = rand.Next(0, 360);
}
public void update(GameTime gametime, List<Meteority> meteory, Meteority thisMeteor)
{
SizeAndPos.X += Convert.ToInt32(gametime.ElapsedGameTime.Milliseconds * smerX);
SizeAndPos.Y += Convert.ToInt32(gametime.ElapsedGameTime.Milliseconds * smerY);
rotation += gametime.ElapsedGameTime.Milliseconds / 8000.0f;
rotation = rotation % circle;
// Midpoint = Vector2.Transform(new Vector2(SizeAndPos.X,SizeAndPos.Y), Matrix.CreateRotationZ(rotation));
// SizeAndPos = Vector2.Transform( SizeAndPos, Matrix.CreateRotationZ(-0.1f))
// Midpoint = new Vector2(SizeAndPos.Width / 2 , SizeAndPos.Height / 2);
if ((SizeAndPos.X <= -100)||(health <=0))
meteory.Remove(thisMeteor);
}
public void draw(SpriteBatch spriteBatch)
{
// spriteBatch.Draw(texture, SizeAndPos, Color.White);
spriteBatch.Draw(texture, SizeAndPos, null, Color.White, rotation,Midpoint, SpriteEffects.None, 0f);
}
Potřebuji aby se oběkt rotoval ale zůstal na stejném místě, kód který mám nyní funguje ale oběkt obíhá kolem bodu a znemožňuje mi další práci, protože nemění hodnoty v proměnné SizeAndPos.
Díky za pomoc doufám že jsem to vysvětlil srozumitelně.