您的位置:首页 > 移动开发 > Unity3D

[Unity3D] 关于触屏用Ray来Hit场景中GameObject的笔记(copy的,转不来)

2013-10-10 10:35 441 查看
先放一段JS代码(出自:http://game.ceeger.com/forum/read.php?tid=4&fpage=2)

///////////////////////////////////////////////////////////////////////////

function Update ()

{

    for (var i = 0; i < Input.touchCount; ++i) {

        if (Input.GetTouch(i).phase == TouchPhase.Began) {

            var hit:RaycastHit;

            // 从目前的触摸坐标,构建射线

            var ray : Ray = camera.ScreenPointToRay (Input.GetTouch(i).position);

            print("ray="+ray);

            

            if (Physics.Raycast (ray, hit))

                print ("I'm looking at " + hit.transform.name);

            else

                print ("I'm looking at nothing!");

        }

    }

}

///////////////////////////////////////////////////////////////////////////

我经过实验后的理解是:

①这段代码是放在camera上的

②需要被击中的对象必须加collider

③被射中的Object可以用"hit"来调用。

例如,我可以写“hit.transform.position.x+=0.1”测试成功。

因此,可以用SendMessage来调用被击中对象自身内的函数。

例如直接调用“hit.transform.SendMessage(OnMouseDown)”的话,可以用鼠标测试单点效果了!

④Ray不会贯穿Object,当我放两个cube在有遮挡的地方,之后触发前面的碰撞。

重点语句:

①发射Ray用:
var ray : Ray = camera.ScreenPointToRay (Input.GetTouch(i).position); 

②撞击用:
var hit:RaycastHit; 
Physics.Raycast (ray, hit) 

撞到东西,返回true值,并给“hit”赋值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d hit Ray 触屏碰撞