Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

RaycastHit.textureCoord

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public var textureCoord: Vector2;
public Vector2 textureCoord;

説明

衝突した UV テクスチャの座標

3D テクスチャペインティングや弾丸マークの描画に使用することができます。 コライダーがメッシュコライダーではなかった場合、 Vector2.zero が返ってきます。

// 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(); }
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(); } }