Unity 6.3
0 онлайн 44 гостей 3 в системе
Вход

RaycastHit.textureCoord

Declaration

public Vector2 textureCoord;

Описание

Координаты ультрафиолетовой текстуры в месте столкновения.

В Scene выпускается луч. textureCoord — это позиция, в которой луч пересёк коллайдер. RaycastHit._textureCoord — координаты текстуры в точке пересечения. Нулевое значение Vector2 возвращается, если в GameObject нет коллайдера меша. К этому свойству можно обращаться не из главного потока. Примечание: Для textureCoord коллайдер должен быть MeshCollider. Примечание: В сборках textureCoord возвращает (0, 0), если в настройках импорта меша не включён параметр Read/Write Enabled.

// Write black pixels onto the GameObject that is located
// by the script. The script is attached to the camera.
// Determine where the collider hits and modify the texture at that point.
//
// Note that the MeshCollider on the GameObject must have Convex turned off. This allows
// concave GameObjects to be included in collision in this example.
//
// Also to allow the texture to be updated by mouse button clicks it must have the Read/Write
// Enabled option set to true in its Advanced import settings.

using UnityEngine; using System.Collections; using UnityEngine.InputSystem;

public class ExampleClass : MonoBehaviour { public Camera cam;

void Start() { cam = GetComponent<Camera>(); }

void Update() { if (!Mouse.current.leftButton.isPressed) return;

RaycastHit hit; if (!Physics.Raycast(cam.ScreenPointToRay(Mouse.current.position.ReadValue()), 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,.