Я хочу заствить куб поворачиватся на 90 градусов каждый раз когда я нажимаю на одну из половин экрана. (С нажатием и определением сторон экрана проблем нет) Куб должен повернутся строго на 90 градусов и после каждого его поворота его позицию нужно признать (0,0,0) но я не могу понять как это реальзовать. На премере этого скриншота, я поверну куб на 90 градусов по оси z и у меня фиолетовый цвет будет на верху. После чего я поверну куб по оси X и у меня должен зеленый цвет встать на место фиолетогого. Но выходит иначе, я вижу такую картину что оси смещаются во время поворота.
if (touch.position.x > Camera.main.scaledPixelWidth/2)
{
Box.transform.Rotate(new Vector3(90, 0, 0), 90f);
}
if (touch.position.x < Camera.main.scaledPixelWidth/2)
{
Box.transform.Rotate(new Vector3(0, 0, -90), 90f);
Если вращение происходит вокруг начала координат, то после поворота на 90 градусов вокруг любой базовой оси куб сместится в другой октант пространства.
Чтобы он оставался в том же положении (но с другой ориентацией), матрицу преобразования нужно модифицировать - смещение на -Size/2 по всем координатам, вращение, обратное смещение.
Edit:
Посмотрел - в unity есть функция
RotateAround(Vector3 point, Vector3 axis, float angle);
point в данном случае середина куба, axis соответственно оси вращения - например, (1,0,0) для вращения вокруг оси, параллельной OX.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей