繁体   English   中英

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

[英]Extending textured gameObject smoothly in Unity

我正在创建简单的游戏,我需要创建扩展圆柱体。 我知道通常如何做-通过更改对象的轴心点并按比例放大它,但是现在我有纹理了,我不希望它拉伸。

我曾努力在圆柱体的末端增加一些小段,但这种方法无法顺利进行并可能影响性能。 您知道对此有什么解决方案吗?

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

缩放之前

在此处输入图片说明

缩放后

在此处输入图片说明

我不要它伸展

这并非易事,但有可能。

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

1。一种方法是程序性地生成绳网并实时分配材料。 对于初学者来说这很复杂。 对此无能为力。

2,另一种不需要网格程序的解决方案。 在对象更改大小时更改图块。

为此,您的纹理必须是可平铺的。 您不能只在线使用任何随机纹理。 另外,您需要一个法线贴图才能使其看起来像绳子。 这是在Maya中使用法线贴图制作绳索纹理的教程 您还必须观看视频的其他部分。

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

获取MeshMeshRenderer ,然后从MeshRenderer获取3D对象的Material 。使用ropeMat.SetTextureScale更改纹理的平铺。 例如,当更改下面代码的xTileyTile值时,将对Mesh的纹理进行平铺。

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));
}

现在,您必须找到一种将xTileyTile值映射到Mesh大小的方法。 这并不简单。 是一种完整的方法,可用于在调整网格/绳索大小时计算xTileyTile值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM