D3DXMatrixTransformation2D ведет себя странно

Я хочу повернуть 2D-спрайты в их положении, а не в любой другой точке, но у меня возникли проблемы с функцией.

Я видел людей, использующих D3DXMatrixTransformation2D таким образом (исключая масштабирование):

D3DXMATRIX mat;

D3DXVECTOR2 center(sprite.width / 2, sprite.height / 2);

D3DXVECTOR2 pos(sprite.x, sprite.y)

D3DXMatrixTransformation2D(
&mat,
NULL,
NULL,
NULL,
&center,
sprite.rotation,
&pos);

Но, делая это, мои спрайты вращаются кругом вокруг какой-то странной точки.

Я пытался и пытался придумать это решение, но кажется, что у него есть некоторые побочные эффекты, в то время как я продолжаю манипулировать координатами сущностей и прочим.

D3DXVECTOR2 pos(sprite.x + (sprite.width / 2), sprite.y + (sprite.height / 2))

D3DXMatrixTransformation2D(
&mat,
NULL,
NULL,
NULL,
&pos,
sprite.rotation,
NULL);

Что-то я пропускаю?

1

Решение

Одна небольшая уловка, которая может оставить вас на некоторое время поцарапать голову, это если ваш файл изображения имеет размеры больше, чем та часть изображения, которую вы пытаетесь повернуть.
Я имею в виду, что если ваш файл изображения имеет размер примерно 512×512, и в левом нижнем углу у вас есть маленькая кошка размером всего 64×64, а остальная часть находится в 0 альфа, она займет центр файла изображения, не из кота.

Если это то, что происходит с вами, вы можете либо переместить кота, или какое-либо другое изображение, в центр файла изображения, или взглянуть немного дальше в DirectX, где вы можете определить прямоугольник и использовать его как вырез. из файла изображения, чтобы связать ваше изображение (кошка).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]