我正在寻找一种沿曲线修改程序网格的方法。 (http://docs.unity3d.com/ScriptReference/Mesh.html)通过沿该曲线创建参考Vector3点并随后相应地更新各种网格阵列。
我相信我需要通过将每个vector3索引设置为该变换处的曲线变换,从曲线创建一个vector3数组。 这可以用对象完成,但我不确定这是否适用于vector3数组E.g:
For (int i = 0; i < items.Length; i++, p++) { //gets the array length of custom mesh
Transform item = Instantiate(items[i]) as Transform; // instantiates item as transform
Vector3 position = spline.GetPoint(p * stepSize); //references my curve point and creates position vector each update
item.transform.localPosition = position; //transforms instantiate item to curve point position
}
要解决的第二个问题是使用这个向量数组添加到我的网格中。 每个网格组件的操作类似,因此我将使用三角形作为示例:
初始三角形:(在开始方法上)
0,2,1
2,3,1
在每次更新时,我希望自然添加2个以上的三角形 以下三角形集将是例如:
2,4,3
4,5,3
(遗憾的是,由于声望限制,我无法发布图片) 这遵循每个新三角形集的规则:
Triangle I0+2 = (Triangle I1 + 2, Triangle I1 + 1, Triangle I1 +2)
Triangle I0+3 = (Triangle I2 + 2, Triangle I2 + 1, Triangle I1 +2)
通过使用&#39;实例化的&#39;将Verticies添加到动态列表中。 vector3从曲线坐标。
我已经在类似的问题上看到了一些尝试,但是我还没有看到这种更新方法,因为看起来其他人已经选择使用网格尺寸更新方法。显然,考虑到使用曲线,这是不切实际的。
答案 0 :(得分:1)
经过多次修修补补后,我找到了答案:
并行三条贝塞尔曲线的浮动距离。 在更新时将这三个点存储为向量。 调整距离变量并通过for循环将每条曲线上的所有矢量放入一个列表中。 在每个for循环实例上,在vector2列表中创建三角形。 一旦计算了所有点:创建你的网格并展开一个可自定义的轨道/道路/路径 - 一定要包括网格渲染器,刚体,对撞机和过滤器。