簡體   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