2013-08-27 2 views
1

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

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 по шкале:

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

Но столкновение было протекающие миль от кнопки

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

+0

Линия '(location.Y + buttonTexture.Height) * scale.Y' мне кажется странным, не должна быть' location.Y + buttonTexture .Height * scale.Y' – jrbeverly

+0

Спасибо за ответ. все работает! : D – user1662290

ответ

0

Преобразовать BoundingBox вашей шкале:

scaledBounds = new BoundingBox(bounds.Min * Scale, bounds.Max*Scale) 
Смежные вопросы