4.18射线

2017-04-18  本文已影响23人  胤醚貔貅

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;

}

}

上一篇下一篇

猜你喜欢

热点阅读