摄像机安全检测
安全监测的方式有很多种

2.当摄像机发射线可以碰到玩家时,且摄像机当前不在初始位置
如果上一个位置能看到家,则后退一步
如果看不到玩家,不动
public class cameraSafe : MonoBehaviour
{//在相机下定义一个空节点作为初始位置public Transform StartPos;//在相机下定义一个空节点作为结束位置public Transform EndPos;//插值的第三个参数public float t;// Start is called before the first frame updatevoid Start(){t = 0;transform.LookAt(transform.parent);}// Update is called once per framevoid Update(){Ray ray = new Ray(transform.position, (transform.parent.position - transform.position).normalized);RaycastHit hit;if (Physics.Raycast(ray, out hit)){if (hit.collider.gameObject.tag != "Player"){t += 0.25f;//钳制t = Mathf.Clamp(t, 0, 1);transform.position = Vector3.Slerp(StartPos.position, EndPos.position, t);transform.LookAt(transform.parent);GetComponent<Camera>().fieldOfView += 10;}//当摄像机发射线可以碰到玩家时,且摄像机当前不在初始位置else if (t != 0){Vector3 beforePos = Vector3.Slerp(StartPos.position, EndPos.position, t - 0.25f);Ray ray2 = new Ray(beforePos,(transform.parent.position - beforePos).normalized );RaycastHit hit2;if(Physics.Raycast(ray2, out hit2)){//如果上一个位置能看到家,则后退一步//如果看不到玩家,不动if (hit2.collider.gameObject.tag == "Player"){t -= 0.25f;GetComponent<Camera>().fieldOfView += 10;//钳制t = Mathf.Clamp(t, 0, 1);transform.position = Vector3.Slerp(StartPos.position, EndPos.position, t);transform.LookAt(transform.parent);}}}}}
}
















