最近项目要实现一个做正弦运动的线条,我想到的方案是改变模型的顶点,利用函数y=aSin(bx+C) 让模型顶点的Y坐标,根据X坐标运动,这样就实现如下图的运动:
废话不多说,是骡子是马拿出来遛一遛,来看一张效果图
好,开始说如何实现:首先新建一个物体,为物体加上必要的组件,加上这些才能显示出来,不要问我为啥子。
GameObject cube = this.gameObject;//or new GameObject();
MeshFilter meshFilter = cube.AddComponent<MeshFilter>();
MeshRenderer renderer = cube.AddComponent<MeshRenderer>();
renderer.material = Resources.Load<Material>("Material/line");
renderer.shadowCastingMode = ShadowCastingMode.Off;
mesh = new Mesh();
mesh.name = "LangCube";
下面就是头牌,对Mesh的创建了,创建模型网上也有很多的资料,其主要的难点在于,顶点的创建,和三角形的建立,这里我们创建一个长方体,这个长方体在X轴上有很多的顶点,这里分享一些我的理解,抛砖迎玉。首先我们以一个正方体为例来讲讲顶点的创建和三角形的构建,正方体有六个面每个面4个点,则一共就有24个顶点,有人肯定要说“为啥是24个,明明是8个点,你当我数学没学好啊!”,因为我们这里不考虑顶点的公用情况,这样能更方便处理构建顶点,构建三角形。当然你考虑顶点公用也是可行的,在构建三角形的时候,注意相应赋值也可以。这里就简单粗暴的处理。
三角形的构建
正方体每一面有2个三角形,每个三角形有3个顶点,则共用36个顶点,同理不考虑顶点的公用,Mesh的triangles是一个int数字,这个int数组的每个数就是对顶点的一个索引,每3个数构成一个三角形,所以这个数组的大小一定是3的倍数。当你构建三角形的时候,需要考虑三角形的正反面,即法线的朝向。这里有一个左手定则,四指的指向为顶点的顺序,大拇指的方