Unity3D 检测摄像机与人之间有无带碰撞器的遮挡物

Unity3D 检测摄像机与人之间有无带碰撞器的遮挡物

在3D游戏中,往往会遇到玩家突然从大空间进入小空间、或从小空间突然进入大空间的情况,比如从屋外进入屋内(反之)。

也会遇到比如绕进围墙的时候,玩家被围墙遮挡的情况。

这个时候摄像机就需要进行自动的拉近、拉远操作。

当然有些时候也会做另外一种处理,就是让遮挡住的物体暂时消失或者淡化一会。

原理很简单,就是由摄像机发出一条射线射到玩家身上,检测之间是否撞击到带有碰撞器的遮挡物。

《核心代码》

[csharp] view plaincopy
  1. RaycastHit   hit;  
  2. vector3  start = Thecamera.position;   //  摄像机本身坐标  
  3. int layerMarsk = ~((1 << 8) | (1 << 2));  
  4. vector3 end = thisTransform.parent.TransformPoint(zoomedPosition);  // 玩家  
  5. if(physics.Linecast(start, end, out hit , layerMask)){  
  6. Do something................;  

posted @ 2012-03-12 09:48  渡蓝  阅读(892)  评论(0)    收藏  举报