我正在玩这个 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);