在看此文章时请先看上面的参考文章
更多精彩请关注【狗刨学习网】看完以上文章后,你也许会想人家都已经给出所有代码了,你还写个毛啊别急,现在进入主题在我的项目中,我采用的是物体遮挡作半透明处理,如果按照上述文章中的思路来写代码的话,那么结果就是当多个物体遮挡角色时,只有第一个物体会半透明,如图:角色被墙和屋顶遮挡住了,但是可以清楚的看见左下角的墙呈半透明状态,而屋顶依旧不透明为了解决这个问题,我们不采用上述文章中的physics
Linecast,在这里我们需要用到Physics
RaycastAll;使用方法详见圣典ok,现在我们开始敲代码首先,我们引入命名空间System
Collections
Generic,然后在声明三个需要用到的变量1
usingSystem
Collections
Generic;//引入命名空间2
publicclassMyCamera1:MonoBehaviour4
//观察目标6
publicTransformTarget;7
//上次碰撞到的物体9
privateListlastColliderObject;10
//本次碰撞到的物体12
privateListcolliderObject;13
}复制代码我们需要发射一条射线,这条射线从角色当前位置发射置摄像机的方向1
/*射线可以从头部起始*/2
3//这里是计算射线的方向,从主角发射方向是射线机方向4
4Vector3aim=Target
position;5
5//得到方向6
6Vector3ve=(Target
position-transform
position)
normalized;7
7floatan=transform
eulerAngles
8aim-=an*ve;9
10//在场景视图中可以看到这条射线11
11//Debu