在Unity中平滑地扩展纹理游戏对象

时间:2016-06-15 16:44:49

标签: c# unity3d

我正在制作简单的游戏,我需要创建扩展圆柱体。我知道如何正常地做 - 通过改变对象的枢轴点和缩放它,但现在我有纹理,我不希望它伸展。

当我不得不长大时,我努力在气缸末端添加小段,但这不会顺畅,可能会影响性能。你知道解决这个问题吗?

这是我现在正在使用的绳索纹理(但将来可能会改变):

缩放前

enter image description here

缩放后

enter image description here

1 个答案:

答案 0 :(得分:0)

  

我不希望它伸展

这不容易实现,但有可能。

您有两种方法可以做到这一点。

1 。一个是在程序上生成绳索网格并实时分配材料。这对初学者来说很复杂。对此无能为力。

2 。另一种不需要网格程序网格生成的解决方案。当对象改变大小时更改切片。

为此,您的纹理必须是可平铺的。你不能只是在线使用任何随机纹理。此外,您需要一个普通的地图来实际使它看起来像一根绳子。这是一个tutorial,用于在Maya中使用法线贴图制作绳索纹理。您还必须观看视频的其他部分。

选择纹理,将Texture Type更改为Texture,将Wrap Mode更改为Repeat,然后点击应用

获取MeshRenderer的{​​{1}},然后从Mesh获取3D对象Material。使用MeshRenderer更改纹理图块。例如,当更改下面代码的ropeMat.SetTextureScalexTile值时,网格的纹理将被平铺。

yTile

现在,您必须找到一种方法,将public float xTile, yTile; public GameObject rope; Material ropeMat; void Start() { ropeMat = rope.GetComponent<MeshRenderer>().material; } void Update() { ropeMat.SetTextureScale("_MainTex", new Vector2(xTile, yTile)); } xTile值映射到yTile的大小。这并不简单。 Here是在重新调整网格/绳索大小时计算MeshxTile应该是什么值的完整方法。