Я играю с кодом в этом Образец игры Unity, чтобы узнать, как преобразовывать объекты с помощью шейдеров. В игре используются шейдеры для искривления мира, и один из этих шейдеров также заставляет объекты вращаться вокруг своей оси Y. Я хотел бы изменить его, чтобы вместо этого вращать объект вокруг оси Z.
Я пытался поменять местами z и y, но хотя это заставляет цилиндр, который я использую для этого эксперимента, вращаться вокруг оси z, это также заставляет цилиндр растягиваться. Только изменение rotVert.z на rotVert.y заставляет цилиндр вращаться на боку под углом 45 градусов. Может ли кто-нибудь сказать мне, где я ошибаюсь?
Вот код, который заставляет объект вращаться вокруг оси Y:
float4 rotVert = v.vertex;
rotVert.z = v.vertex.z * cos(_Time.y * 3.14f) - v.vertex.x * sin(_Time.y * 3.14f);
rotVert.x = v.vertex.z * sin(_Time.y * 3.14f) + v.vertex.x * cos(_Time.y * 3.14f);
o.vertex = UnityObjectToClipPos(rotVert);