Raycast[unity 3d]

1.鼠标点击控制移动
1)获得点击坐标,
2)根据坐标设置朝向
3)沿着朝向向前移动
4)当坐标与点击坐标距离小于规定值时停止移动
   void Update () {
      //点击瞬间改变朝向     
      if(Input.GetMouseButtonDown(0)&&UICamera.hoveredObject == null){
            Ray ray =  Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            if(Physics.Raycast(ray,out hitInfo)){
                if(hitInfo.collider.tag == tags.ground){
                    showClickEffect(hitInfo.point);
                    isMoving = true;
                    changeFaceTo(hitInfo.position);
                }
            }
        }
        if(Input.GetMouseButtonUp(0)){
            isMoving = false;
        }
       //实时改变朝向
       if(isMoving){
            Ray ray =  Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            if(Physics.Raycast(ray,out hitInfo)){
                if(hitInfo.collider.tag == tags.ground){
                    changeFaceTo(hitInfo.point);
                }
            }
        }
    }
2.NGUI击穿判断
与Camera不同,UICamera可以直接检测鼠标点击是否在NGUI控件上,不需要自己构造ray
if (!UICamera.Raycast (Input.mousePosition, outhitInfo)){

}

3.任意碰撞检测
常规方法,创建自定义Ray,通过Ray是否与其他物体碰撞进行碰撞检测
Raycast(射线源头坐标,射线方向,碰撞信息,射线长度);
【注意】
1)直接以transform.position为射线源头坐标,可能会因为模型中心在模型脚底下方,使得无法触发碰撞,要检查模型中心坐标
2)射线碰撞检测不管被碰撞物体的collider的isTrigger是否勾选都能检测到

if(Physics.Raycast(rayOriginal.position,dir,out hitInfo,0.4f)){
        if(hitInfo.collider.name == “Back Wall”){
            Dead();
        }
    }

作者:Monkker
来源:CSDN
原文:https://blog.csdn.net/u013785119/article/details/40002471
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值