Version: 2017.3

RaycastHit.textureCoord2

切换到手册
public Vector2 textureCoord2 ;

描述

撞击点处的辅助 UV 纹理坐标。

这可以用于 3D 纹理绘制或绘制弹痕。 如果碰撞体不是网格碰撞器,则返回 Vector2.zero。 如果网格不包含任何辅助 UV 集,则返回主 UV 集的 UV。

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.textureCoord2; pixelUV.x *= tex.width; pixelUV.y *= tex.height; tex.SetPixel(Mathf.FloorToInt(pixelUV.x), Mathf.FloorToInt(pixelUV.y), Color.black); tex.Apply(); } }