Описание
Координата вторичной УФ-текстуры в точке удара.
Это можно использовать для рисования 3D-текстуры или рисования маркеров. Если коллайдер не является коллайдером сетки, будет возвращен Vector2.zero. Если сетка не содержит вторичного набора UV, будет возвращена UV основного набора UV.
Примечание. Для textureCoord2 требуется, чтобы коллайдер был MeshCollider. р>
using UnityEngine;
public class Example : MonoBehaviour
{
// Прикрепите этот скрипт к камере, и он будет рисовать черные пиксели в 3D
// на все, что пользователь щелкает. Убедитесь, что сетка, которую вы хотите нарисовать,
// к нему прикреплен коллайдер сетки.
Camera cam;
void Start()
{
cam = GetComponent<Camera>();
}
void Update()
{
// Только когда нажимаем мышкой
if (!Input.GetMouseButton(0))
{
return;
}
// Только если мы во что-то попали, мы продолжаем
RaycastHit hit;
if (!Physics.Raycast(cam.ScreenPointToRay(Input.mousePosition), out hit))
{
return;
}
// На всякий случай также убедитесь, что у коллайдера тоже есть рендерер
// материал и текстура. Также мы должны игнорировать примитивные коллайдеры.
Renderer rend = hit.transform.GetComponent<Renderer>();
MeshCollider meshCollider = hit.collider as MeshCollider;
if (rend == null || rend.sharedMaterial == null ||
rend.sharedMaterial.mainTexture == null || meshCollider == null)
{
return;
}
// Теперь рисуем пиксель, где мы попали в объект
Texture2D tex = rend.material.mainTexture as Texture2D;
Vector2 pixelUV = hit.textureCoord2;
pixelUV.x *= tex.width;
pixelUV.y *= tex.height;
tex.SetPixel(Mathf.FloorToInt(pixelUV.x), Mathf.FloorToInt(pixelUV.y), Color.black);
tex.Apply();
}
}