Physics射线 u3d学习总结笔记本

16个重载方法...emmmm

Ray ray = new Ray(transform.position+transform.forward,transform.forward);//发射点,发射方向

Debug.DrawRay(ray.origin,ray.direction*100,Color.yellow);//射线画线

bool isCollider = Physics.Raycast(ray);//射线无限长
bool isCollider = Physics.Raycast(ray,10);//射线长度
//==============================================================
RaycastHit hit;
bool isCollider = Physics.Raycast(ray,out hit);//射线,返回碰撞器
bool isCollider = Physics.Raycast(ray,Mathf.Infinity,LayerMask.GetMask("UI","第二层") );
	//射线,与某层发生碰撞

bool isCollider = Physics.Raycast(ray,out hit,10,LayerMask.GetMask("Default"));
	//射线,返回碰撞物,射线长度,与xx层碰撞

print(hit.collider);//获取碰撞物体名字
print(hit.point);//在世界空间的撞击点,射线击中了对撞机。

用法2:

RaycastHit hit;

if(Physics.Raycast(transform.position+Vector3.up*0.3f,transform.forward,out hit,4)){
	if(hit.collider.tag =="Obstacle"){//检测墙体
		if(hit.distance>3){//判断障碍物距离

			Vector3 point = hit.point;//获得射线碰撞位置

			point.y = hit.collider.transform.position.y+hit.collider.bounds.size.y+0.1f;//墙的位置,墙y的高度

			matchTarget = point;
			isvault = true;

		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_40346899/article/details/82710398