У меня есть некоторый код в моей игре, который вращает значок на холсте следующим образом:
if (rotate > 0) {
context.translate(canvasWidth / 2, canvasHeight / 2);
context.rotate(rotate);
context.translate(-canvasWidth / 2, -canvasHeight / 2);
}
Ничего, чего вы раньше не видели. Я также добавил функцию, которая накладывает значки на большие холсты следующим образом:
var x = 0;
var y = 0;
for (var i = 0; i < totalUnits; i++) {
context.drawImage(img, x, y);
if (i != 0 && (i + 1) % level == 0) {
x = 0;
y += 72;
}
else {
x += 72;
}
}
Обратите внимание, что переменная level
может быть любым целым числом, а totalUnits
- это ее квадрат, если он больше чем 1, например, если я укажу level
как 2, то на моем холсте будут нарисованы 4 изображения: 2 поперек и 2 вниз. Также обратите внимание, что мои изображения всегда имеют размер 72х72 пикселей, следовательно, 72 выше. Опять же, ничего особенного.
Моя трудность заключается в том, чтобы повернуть изображения в пределах холста таким образом, чтобы отдельное изображение поворачивалось на значение, переданное в rotate
, но не на сам холст целиком. Я попытался добавить следующий код со многими перестановками, заменив вышеуказанный вызов на context.drawImage
в for
l oop, но пока безуспешно:
context.translate(72 / 2, 72 / 2);
context.rotate(rotate);
context.drawImage(img, x, y);
context.rotate(0);
context.translate(-72 / 2, -72 / 2);
Чтобы помочь визуализировать эффект, я пытаясь достичь, вот что нарисовано, когда вращение установлено в 0:
И вот что я хотел бы, чтобы мои мозаичные изображения на холст, чтобы выглядеть, когда повернут на 45 градусов (например):
Я хотел бы отметить, что я не пытаюсь повернуть весь холст - я знаю, как чтобы сделать это, но это не тот эффект, которого я пытаюсь достичь, так как мне нужно, чтобы значки оставались в своих отдельных положениях x, y. Кроме того, вращение всего холста создает проблемы с обрезанным углом.
Любая помощь будет принята с благодарностью!