Я создаю 2D игру.Вид - прямо над моим персонажем, когда он стоит в центре экрана, а мир движется (и вращается) вокруг него.Я делаю это, вызывая D3DXMatrixTransformation2D и помещая (постоянную) позицию моего персонажа и вращение его.
Это хорошо работает для моего персонажа и фона.Для пуль и врагов, хотя это работает, это не то, что я хочу.Я хочу, чтобы враги вращались вокруг своей оси вместе с общей осью моего персонажа.В настоящее время, когда я поворачиваюсь на 180 градусов, противник переворачивается вверх ногами, так же, как фон.Это нормально, но я хочу, чтобы он мог повернуться, чтобы выстрелить в меня (или повернуть в той же степени, чтобы мы всегда смотрели вверх; я еще не решил, но я верю, что это та же проблема).
Пули - это та же история.Моей первой конструкцией пули был длинный тощий луч энергетического типа.Независимо от того, в каком направлении я стрелял, он всегда был бы направлен на «север», даже если он двигался в другом (правильном) направлении.Я пока обошел эту проблему, создав круглую пулю, но она не решает реальную проблему.
Так есть ли способ вызвать D3DXMatrixTransformation2D дважды?Я пытался сделать это с одной матрицей и одним вызовом SetTransform (), двумя матрицами и двумя вызовами SetTransform (), а также с одной матрицей и двумя вызовами SetTransform (), но это либо ничего не меняет, либо делает пулю/ Враг текстурирует центр вращения и не распознает мое вращение.Я могу предоставить некоторый код, если это необходимо, но в коде нет ничего особенного, что создает мне эту проблему.Спасибо!
РЕДАКТИРОВАТЬ: Вот код, который я сейчас имею, но он, кажется, работает так же, как и раньше:
D3DXVECTOR2* center = new D3DXVECTOR2(position.x,position.y);
D3DXMatrixTransformation2D(&mat,NULL,0.0,NULL, center, this->rotation,NULL);
sprite->SetTransform(&this->mat);
D3DXMatrixTransformation2D(&this->mat, NULL, NULL, NULL, &this->spriteCenter, *player::getInstance()->getRotation(), NULL);
sprite->SetTransform(&this->mat);
sprite->Draw(bullet, NULL, NULL, &this->position, 0xFFFFFFFF);
Переменная "position" - это переменная D3DXVECTOR3, которая являетсяположение экрана текущего объекта маркера.«Это-> вращение» - это вращение пули.Переменная spriteCenter - это позиция центра текстуры игрока, которая равна (408, 316, 0).