Примените текстуру в четырехугольной сетке из текстурного атласа - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь динамически применить текстуру из атласа текстуры к четырехугольной сетке в Unity3D.

Когда я делаю то же самое в сетке куба, передняя грань работает очень хорошо, но другаяте искажаются.Поэтому у меня возникла идея использовать простой четырехугольник, и теперь я сталкиваюсь с таким сценарием:

enter image description here

Изображение должно отображаться так:

enter image description here

Я размещаю текстуру с помощью кода ниже.Математика работает нормально:

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

Что я должен сделать, чтобы поместить текстуру в четырехугольную сетку в качестве эталона изображения?

1 Ответ

0 голосов
/ 08 марта 2019

Для тех, кто ищет ответ:

Я исправил это изменение хвоста (смещения) и масштаба шейдера.Пример:

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...