Граничная рамка масштаба XNA

Я работаю над классом для кнопки. Идея состоит в том, что кнопка вычисляет размер текста, а затем соответствующим образом масштабируется.

float X = font.MeasureString(text).X;
float Y = font.MeasureString(text).Y;
float x = 1.0f + (X / buttonTexture.Width);
float y = 1.0f + (Y / buttonTexture.Height);
scale = new Vector2(x,y);

Этот код отлично работает.

Я использую BoundingBoxes для проверки столкновения. Однако как учесть положение масштаба при создании ограничивающей рамки?

Пока у меня есть:

BoundingBox buttonBox = new BoundingBox(new Vector3(location, 0), new Vector3(location.X  + buttonTexture.Width, location.Y  + buttonTexture.Height, 0));

Я попытался умножить правую нижнюю точку ограничительной рамки на масштаб:

BoundingBox buttonBox = new BoundingBox(new Vector3(location, 0), new Vector3((location.X  + buttonTexture.Width * scale.X), (location.Y  + buttonTexture.Height) * scale.Y, 0));

Но столкновение происходило в милях от кнопки

Заранее спасибо.


person user1662290    schedule 27.08.2013    source источник
comment
Строка (location.Y + buttonTexture.Height) * scale.Y мне кажется странной, не должна ли она быть location.Y + buttonTexture.Height * scale.Y   -  person jrbeverly    schedule 27.08.2013
comment
Спасибо за ответ. все работает! :D   -  person user1662290    schedule 28.08.2013


Ответы (1)


Преобразуйте ограничивающую рамку по своему масштабу:

  scaledBounds = new BoundingBox(bounds.Min * Scale, bounds.Max*Scale)
person Blau    schedule 27.08.2013