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
版权声明:本文为博主原创文章,转载请附上博文链接!