我正在尝试将纹理图集中的纹理动态应用于Unity3D中的四边形网格。
当我在一个立方体网格中执行相同的操作时,正面效果很好,但其他曲面失真了。所以我有了一个简单的四边形的想法,现在我遇到了这种情况:
图像应显示如下:
我通过下面的代码放置纹理。数学工作正常:
public int offsetX = 0;
public int offsetY = 0;
private const float offset = 0.0625f; // the rate of each texture square
void Start ()
{
Mesh mesh = GetComponent<MeshFilter>().mesh;
Vector2[] UVs = new Vector2[mesh.vertices.Length];
UVs[0] = new Vector2(offsetX * offset, offsetY * offset);
UVs[1] = new Vector2((offsetX * offset) + offset, offsetY * offset);
UVs[2] = new Vector2(offsetX * offset, (offsetY * offset) + offset);
UVs[3] = new Vector2((offsetX * offset) + offset, (offsetY * offset) + offset);
mesh.uv = UVs;
}
如何将纹理放置在四边形网格中作为图像参考?
答案 0 :(得分:0)
对于那些寻求答案的人:
我修复了更改着色器的尾部(偏移)和比例的问题。示例:
using UnityEngine;
public class Cube : MonoBehaviour {
public int offsetX = 0;
public int offsetY = 0;
private Renderer _rend;
private Material _material;
private const float Offset = 0.0625f;
// Use this for initialization
private void Start ()
{
_rend = GetComponent<Renderer>();
_material = _rend.material;
_material.mainTextureScale = new Vector2(Offset,Offset);
}
private void Update()
{
_material.mainTextureOffset = new Vector2(offsetX*Offset,offsetY*Offset);
}
}