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

先放一段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”赋值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值