ビューポート座標を介して、カメラからレイを飛ばします。
結果として得られたレイはワールド空間でカメラの近平面から始まり positionの(x,y)はビューポート上のものと同じ座標値です。(position.zは無視されます) Viewport coordinates are normalized and relative to the camera. The bottom-left of the camera is (0,0); the top-right is (1,1).
// Prints the name of the object camera is directly looking at function Update () { // Get the ray going through the center of the screen var ray : Ray = camera.ViewportPointToRay (Vector3(0.5,0.5,0)); // Do a raycast var hit : RaycastHit; if (Physics.Raycast (ray, hit)) print ("I'm looking at " + hit.transform.name); else print ("I'm looking at nothing!"); }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { Ray ray = camera.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0)); RaycastHit hit; if (Physics.Raycast(ray, out hit)) print("I'm looking at " + hit.transform.name); else print("I'm looking at nothing!"); } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): def Update() as void: ray as Ray = camera.ViewportPointToRay(Vector3(0.5F, 0.5F, 0)) hit as RaycastHit if Physics.Raycast(ray, ): print(('I\'m looking at ' + hit.transform.name)) else: print('I\'m looking at nothing!')