2014-01-17 3 views
-1

Если у меня есть 3 разных спрайта, каждый из них принадлежит к одному и тому же спрайту, но с другим типом анимации. Каждая из них имеет разную ширину и высоту на листе спрайта.Центрирование трех прямоугольников разного размера

Как настроить 3 с помощью математики, чтобы они были центрированы и накладывались друг на друга, так что, когда я могу изменить их анимацию, и все анимации перекрываются друг с другом. Я хотел бы получить x, y для каждого спрайта, тогда все они будут иметь одинаковую позицию.

+0

Зачем вам размещать его на двух разных сайтах? http://gamedev.stackexchange.com/questions/68936/centering-three-rectangles-of-different-size –

+0

@ Аndrea и в чем проблема с этим? gamedev! = stackoverflow – Andre

ответ

0

Вот несколько псевдокодов. Перевести на свой предпочтительный язык.

Let wi and hi be width and height of ith image, i = 1, 2, 3. 
Let (x1, y1), ..., (x3, y3) be the coordinates of the top left corner of each image. 

    wmax = max(w1, w2, w3) 
    hmax = max(h1, h2, h3) 

     x1 = round((wmax - w1)/2) // Depending on your language and your purposes, floor or ceil.  
     y1 = round((hmax - h1)/2) // Similar comment as x 

    // Similarly for (x2, y2) and (x3, y3) 

    // Add offset if necessary 

    Let (x0, y0) be offset to add to top left corner of image. 

    (xi, yi) = (xi + x0, yi + y0) 
+0

спасибо !. Тем не менее есть небольшое смещение между всеми анимациями в Y-оси. Я перевел все спрайты в один и тот же x, y. но все еще есть несколько пикселей выключены – Andre

+0

Только для оси Y? Сколько пикселей выключено? Если это одно, то это может быть связано с округлением. Обратите внимание, что если вы используете целочисленное деление, округление не влияет. – lightalchemist

Смежные вопросы