如何更改此着色器代码以更改导致对象旋转的轴?

问题描述 投票:0回答:1

我正在玩this Unity sample game中的代码,以了解如何使用着色器转换对象。游戏使用着色器来曲线化世界,其中一个着色器也会使对象围绕其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);
unity3d shader unity3d-shaders
1个回答
0
投票

实际上,这很简单。您还需要修改x的值。

            float4 rotVert = v.vertex;
            rotVert.y = v.vertex.y * cos(_Time.y * 3.14f) - v.vertex.x * sin(_Time.y * 3.14f);
            rotVert.x = v.vertex.y * sin(_Time.y * 3.14f) + v.vertex.x * cos(_Time.y * 3.14f);

            o.vertex = UnityObjectToClipPos(rotVert);

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.