今天遇到了这样的一个需求觉得很有建设性:在摄像机跟随角色移动的过程中,如果遇到物体遮挡,将其变为透明材质,物体移开后还原初始材质。
下面是我的实现方式:~
1、创建射线。(顺便把透明材质球加载出来)
private Ray ray;
//透明材质球
private Material alphaMate;
void Start()
{
ray = Camera.main.ScreenPointToRay(transform.position);
alphaMate = Resources.Load<Material>("Ambient Particle");
}
2、代码方面的准备工作。
RaycastHit hit;
//照射到的物体
private GameObject selectModel;
//遮挡物的所有材质
private MeshRenderer[] targetMeshs;
//用来存储遮挡物变透明之前的所有材质
private List<Material> tempMats = new List<Material>();
3、接下来就是替换方法了。
void ChangeMates()
{
//圆柱形射线检测:起点为摄像机位置,圆柱半径0.5,方向沿摄像机Z轴正方向射出500的长度。
if (Physics.SphereCast(CameraTrans.position, 0.5f, CameraTrans.forward, out hit, 500))
{
//通过碰撞物体的名字判断是否为遮