3D Picking 原理就是从相机位置向空间中发射一条射线,根据射线击中的物体来进行拾取。
这里我们使用触摸屏触摸来进行拾取,鼠标的拾取原理一样,只不过选用的API不同。
从unity3D官网Manual里找到以下Input内容:
http://docs.unity3d.com/Documentation/Manual/Input.html
其中有段例子程序:
Following is an example script which will shoot a ray whenever the user taps on the screen:
var particle : GameObject;
function Update () {
for (var touch : Touch in Input.touches) {
if (touch.phase == TouchPhase.Began) {
// Construct a ray from the current touch coordinates
var ray = Camera.main.ScreenPointToRay (touch.position);
if (Physics.Raycast (ray)) {
// Create a particle if hit
Instantiate (particle, transform.position, transform.rotation);
}
}
}
}
var ray = Camera.main.ScreenPointToRay (touch.position);
if (Physics.Raycast (ray))
这两句代码是关键代码,我们从这里入手。
查找ScreenPointToRay文档:
http://docs.unity3d.com/Documentation/ScriptReference/Camera.ScreenPointToRay.html
节选文档中主要描述和一段例子
Ray ScreenPointToRay(