2016-06-15 6 views
0

私はシンプルなゲームを作成しており、拡張シリンダを作成する必要があります。私は通常、それを行う方法を知っています - オブジェクトのピボットポイントを変更し、それを拡大することによって、しかし今は私はそれにテクスチャを持っており、私はそれが伸びたくありません。ユニティで滑らかにテクスチャリングされたgameObjectを拡張する

私は、成長が必要なときにシリンダーの端に小さなセグメントを追加することについて争ったが、これは滑らかに働くことはなく、パフォーマンスに影響するかもしれない。あなたはこれに対する解決策を知っていますか?

この私が今使っている(しかし、それは将来的に変更される可能性があります)ロープテクスチャ:

enter image description here

+0

スケールの前後でテクスチャはどのように見えますか?その(画像)であなたの質問を編集してください。 – Programmer

+0

@Programmer画像の前後にある投稿 – clone

+0

を更新しました。 – Programmer

答えて

0
をスケーリングした後

enter image description here

をスケーリングする前に

私は伸ばしたくありません

これは容易ではありませんが、可能です。

これには2通りの方法があります。

。ロープメッシュを手続き的に生成し、リアルタイムで材料を割り当てることです。これは初心者にとっては複雑です。これでは助けにならない。

メッシュ生成手続きメッシュ生成を必要としない他のソリューション。オブジェクトがサイズを変更している間にタイルを変更します。

これを行うには、テクスチャをタイル化する必要があります。ランダムなテクスチャをオンラインで使うことはできません。また、実際にはロープのように見えるようにするには、通常のマップが必要です。 Mayaの法線マップでロープテクスチャを作成するためのtutorialがあります。あなたが見なければならないビデオの他の部分もあります。

はその後を適用 をクリックしRepeatからWrap Modeを変更、TextureTexture Typeを変更、テクスチャを選択します。

MeshMeshRendererは、テクスチャのタイルを変更するMeshRenderer .USE ropeMat.SetTextureScaleから3DオブジェクトのMaterialをゲット。たとえば、以下のコードのxTileyTileの値を変更すると、メッシュのテクスチャがタイル表示されます。

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

は今、あなたはMeshの大きさにxTileyTile値をマッピングする方法を見つける必要があります。それは簡単ではありません。 Hereは、メッシュ/ロープのサイズを変更するときに値xTileyTileを計算する完全な方法です。

+0

ありがとう!私はそれが私のためにうまくいくと思う、私はできるだけ早くそれを試してみるだろう。 – clone

+0

@clone答えにリンクしたコードをテストしたところ、うまくいくように見えました。あなたはただそれを直接使うことができます。残っているのは、タイル可能な色と法線マップを作ることだけです。 – Programmer

+0

私は 'xTile'と' yTile'の値を計算するのに少し問題があります。私は基本的に 'void UpdateTiling()'を使用しています。これは部分的に動作しますが、間違った軸でテクスチャを傷つける(何も起こらないので、何も起きませんが、 y)。また私は、私のシリンダーの 'planeSizeX = 10f'と' planeSizeZ = 10f'をどうすれば見つけることができるのか分かりません。あなたの助言に感謝します。 – clone

関連する問題