Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

RaycastHit.textureCoord

public Vector2 textureCoord;

Описание

Координата UV-текстуры в месте столкновения.

В сцену попадает луч. textureCoord — это место, где луч попал в коллайдер. RaycastHit._textureCoord — координата текстуры при попадании. Если в GameObject нет коллайдера сетки, возвращается ноль Vector2.

Примечание. Для textureCoord требуется, чтобы коллайдер был MeshCollider. // Записываем черные пиксели в GameObject, расположенный // по сценарию. Скрипт прикреплен к камере. // Определяем, куда попадает коллайдер, и изменяем текстуру в этой точке. // // Обратите внимание, что для MeshCollider в GameObject выпуклость должна быть отключена. Это позволяет // вогнутые игровые объекты, которые будут включены в коллизию в этом примере. // // Также, чтобы текстура могла обновляться щелчком кнопки мыши, она должна иметь чтение/запись // Для параметра Enabled установлено значение true в его дополнительных настройках импорта. using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public 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.textureCoord; pixelUV.x *= tex.width; pixelUV.y *= tex.height; tex.SetPixel((int)pixelUV.x, (int)pixelUV.y, Color.black); tex.Apply(); } }

Смотрите так же: Physics.Raycast, Physics.Linecast, Physics.RaycastAll.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3