Camera相机与射线 u3d学习总结笔记本

目录

1.获取相机

2.从相机发射射线

3.改变相机焦距 (获取两个数值的线性差值)

4.改变相机背景颜色 (获取两个颜色的线性差值)

5.目标跟随与注视


//============================================

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);
    //注视主角

返回目录

猜你喜欢

转载自blog.csdn.net/qq_40346899/article/details/82708576