Legacy Documentation: Version 4.6.2
Language: English
  • C#
  • JS
  • Boo

Script language

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

RaycastHit.textureCoord

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

public var textureCoord: Vector2;
public Vector2 textureCoord;
public textureCoord as Vector2

Description

The uv texture coordinate at the impact point.

This can be used for 3D texture painting or drawing bullet marks. If the collider is no mesh collider, zero Vector2 will be returned.

	// 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.
	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 (camera.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 renderer : Renderer = hit.collider.renderer; var meshCollider = hit.collider as MeshCollider; if (renderer == null || renderer.sharedMaterial == null || renderer.sharedMaterial.mainTexture == null || meshCollider == null) return; // Now draw a pixel where we hit the object var tex : Texture2D = renderer.material.mainTexture; var pixelUV = hit.textureCoord; pixelUV.x *= tex.width; pixelUV.y *= tex.height; tex.SetPixel(pixelUV.x, pixelUV.y, Color.black); tex.Apply(); }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Update() {
        if (!Input.GetMouseButton(0))
            return;
        
        RaycastHit hit;
        if (!Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), out hit))
            return;
        
        Renderer renderer = hit.collider.renderer;
        MeshCollider meshCollider = hit.collider as MeshCollider;
        if (renderer == null || renderer.sharedMaterial == null || renderer.sharedMaterial.mainTexture == null || meshCollider == null)
            return;
        
        Texture2D tex = renderer.material.mainTexture;
        Vector2 pixelUV = hit.textureCoord;
        pixelUV.x *= tex.width;
        pixelUV.y *= tex.height;
        tex.SetPixel(pixelUV.x, pixelUV.y, Color.black);
        tex.Apply();
    }
}
import UnityEngine
import System.Collections

public class ExampleClass(MonoBehaviour):

	def Update() as void:
		if not Input.GetMouseButton(0):
			return
		hit as RaycastHit
		if not Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), ):
			return
		renderer as Renderer = hit.collider.renderer
		meshCollider as MeshCollider = (hit.collider as MeshCollider)
		if (((renderer == null) or (renderer.sharedMaterial == null)) or (renderer.sharedMaterial.mainTexture == null)) or (meshCollider == null):
			return
		tex as Texture2D = renderer.material.mainTexture
		pixelUV as Vector2 = hit.textureCoord
		pixelUV.x *= tex.width
		pixelUV.y *= tex.height
		tex.SetPixel(pixelUV.x, pixelUV.y, Color.black)
		tex.Apply()