4.18射线
usingUnityEngine;
usingSystem.Collections;
publicclassCubeMove:MonoBehaviour{
Rayray;//声明射线
RaycastHit hit;//射线碰撞信息
voidStart(){
}
voidUpdate(){
Move();
//从自身位置发射射线
//发射一条射线,返回检测到的第一个物体,返回值为bool值
//Rayray=newRay(transform.position,transform.forward);
//一般射线(只能检测到一个物体)
//Debug.DrawLine(transform.position,hit.point,Color.red);
//if(Physics.Raycast(ray,outhit,10)){
//
//print("有敌情");
//}
//可以检测所有物体
//RaycastHit[]hits=Physics.RaycastAll(ray);
//
//if(hits.Length>0){
//
//print(hits.Length);
//}
//从摄像头位置发出的射线(特殊射线)
if(Input.GetMouseButtonDown(0)){
Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);
Physics.Raycast(ray,out hit);
}
if(hit.collider){
Vector3 tempV3=Vector3.Lerp(transform.position,hit.point,Time.deltaTime);
transform.position=newVector3(tempV3.x,0.5f,tempV3.z);
}
//打开第N层,射线只能检测到这一层
//LayerMaskmask=1<<(LayerMask.NameToLayer("Cube"));//只能检测到Layer为Cube的物体
//1<<10打开第十层,当前射线只能检测到第10层上的碰撞体
//~(1<<10)打开除第10层以外的所有层,除第10层以外的碰撞体都能被检测到
//~(1<<0)打开所有层
//(1<<8)| (1<<10)同时打开第8层和第10层
Rayray2=newRay(transform.position,transform.forward);
LayerMaskmask=~(1<<LayerMask.NameToLayer("Cube"));//可以检测到除“Cube”以外的所有物体
if(Physics.Raycast(ray2,outhit,100,mask.value)){
print(hit.collider.gameObject.name);
}
}
voidMove(){
float hor=Input.GetAxis("Horizontal");
float ver=Input.GetAxis("Vertical");
transform.position+=(transform.forward*ver+transform.right*hor)*Time.deltaTime*20;
}
}