Legacy Documentation: Version 5.6 (Go to current version)
LanguageEnglish
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

RaycastHit.textureCoord

public var textureCoord: Vector2;

Description

The uv texture coordinate at the collision location.

A ray is fired into the scene. The textureCoord is the location where the ray has hit a collider. RaycastHit._textureCoord is a texture coordinate when a hit occurs. A Vector2 zero is returned if no mesh collider is present in the GameObject.

// Attach this script to a camera and it will paint black pixels in 3D
// on whatever the user clicks. Make sure the mesh you want to paint
// on has a mesh collider attached.

var cam: Camera;

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

function Update () { // Only when we press the mouse if (!Input.GetMouseButton(0)) return;

// Only if we hit something, do we continue var hit : RaycastHit; if (!Physics.Raycast(cam.ScreenPointToRay(Input.mousePosition), hit)) return;

// Just in case, also make sure the collider also has a renderer // material and texture. Also we should ignore primitive colliders. var rend : Renderer = hit.transform.GetComponent.<Renderer>(); var meshCollider = hit.collider as MeshCollider;

if (rend == null || rend.sharedMaterial == null || rend.sharedMaterial.mainTexture == null || meshCollider == null) return;

// Now draw a pixel where we hit the object var tex : Texture2D = rend.material.mainTexture as Texture2D; var pixelUV : Vector2 = hit.textureCoord; pixelUV.x *= tex.width; pixelUV.y *= tex.height;

tex.SetPixel(pixelUV.x, pixelUV.y, Color.black);

tex.Apply(); }