目录
//============================================
1.获取相机
mainCamera = GameObject.Find("MainCamera").GetComponent<Camera>();
mainCamera = Camera.main;//这个是通过标签查找获取
2.从相机发射射线
Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
//射线的代表=返回一个从相机到屏幕点的光线(当前鼠标在像素坐标中的位置。(只读))
RaycastHit hit;//用于从射线投射中获取信息的结构。
bool isCollider = Physics.Raycast(ray,out hit);//物理属性和辅助方法。
if(isCollider){
print(hit.collider);//打印指向物体
}
//============================================
Ray ray = mainCamera.ScreenPointToRay(new Vector3(200,200,0));//返回一个从相机到屏幕点的光线。
Debug.DrawRay(ray.origin,ray.direction*10,Color.yellow);//射线画线
//射线的原点,射线的方向*10
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
Vector3 dir = (ray.origin+ray.direction*100)-gameobject.transform.position;
//获取相机射线的欧拉角向量( gameobject 炮塔注视射线的角度)
//不明:原点+方向=真实方向位置(目标的世界坐标)
//目标的世界坐标 - gameobject炮塔的世界坐标 = 炮塔注视目标的向量
Quaternion target = Quaternion.LookRotation(dir);//计算得出四元数角度
把鼠标的屏幕位置转换成世界坐标
print(Camera.main.ScreenToWorldPoint(Input.mousePosition));
//z轴与相机位置有关
3.改变相机焦距 (获取两个数值的线性差值)
MainCamera.orthographicSize=Mathf.Lerp(MainCamera.orthographicSize,4,speed*Time.deltaTime);
//摄像机摄影距离渐变,在a和b之间线性插值。
4.改变相机背景颜色 (获取两个颜色的线性差值)
MainCamera.backgroundColor = Color.Lerp(MainCamera.backgroundColor,Color.red,speed*Time.deltaTime);
//摄像机背景颜色渐变,颜色在a和b之间线性插值
5.目标跟随与注视
Vector3 tarpos = player1.position + player1.TransformDirection( offset);
//偏移(变换方向从局部坐标转换到世界坐标)
//根据主角的局部坐标,把偏移值转换成世界坐标,达到转向也跟随的目的
transform.position = Vector3.Lerp(transform.position,tarpos,Time.fixedDeltaTime*smoothing);
//相机进行差值跟随
transform.LookAt(player1.position);
//注视主角