利用Unity制作特写镜头的示例代码_第1页
利用Unity制作特写镜头的示例代码_第2页
利用Unity制作特写镜头的示例代码_第3页
利用Unity制作特写镜头的示例代码_第4页
利用Unity制作特写镜头的示例代码_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第利用Unity制作特写镜头的示例代码目录类似这种效果1.首先制作上下两层黑边2.摄像头聚焦的效果

类似这种效果

黑边的大小可以自行调整

这里为了方便直接用两个Button绑定了方法,有需要自行调用方法

1.首先制作上下两层黑边

创建Canvas然后在canvas上新建空物体,命名为CinemaCloseUpShot

在上面新建脚本CinemaCloseUP

publicclassCinemaCloseUP:MonoBehaviour

publicfloattargetSizeInput;//上下黑条的宽度

publicfloatshowTime;//进行缩放所需的时间

privateRectTransformtopBar,bottomBar;//声明上下两个RectTransform,该组件在UI中控制UI大小、位置等参数

privatefloatchangeSizeAmount;//上下黑条变化量

privateboolisActive;//是否进行特写

privatefloattargetSize;//

privatevoidAwake()

//创建上方黑条,类型为图片

GameObjectgameObject=newGameObject("topBar",typeof(Image));

gameObject.transform.SetParent(transform,false);//将之前的空物体设为父物体

gameObject.GetComponentImage().color=Color.black;//颜色设为黑色

topBar=gameObject.GetComponentRectTransform//获取黑条图片的RectTransform

//将上方图片的锚点设为(0,1)和(1,1),其实就是父物体的左上角和右上角两个锚点

topBar.anchorMax=newVector2(1,1);

topBar.anchorMin=newVector2(0,1);

topBar.sizeDelta=newVector2(0,0);//默认图片大小为0

//创建下方黑条,类型为图片

gameObject=newGameObject("bottomBar",typeof(Image));

gameObject.transform.SetParent(transform,false);

gameObject.GetComponentImage().color=Color.black;

bottomBar=gameObject.GetComponentRectTransform

//将下方图片的锚点设为(0,0)和(1,0),其实就是父物体的左下角和右下角两个锚点

bottomBar.anchorMax=newVector2(1,0);

bottomBar.anchorMin=newVector2(0,0);

bottomBar.sizeDelta=newVector2(0,0);//默认图片大小为0

privatevoidUpdate()

if(isActive)

Vector2sizeDelta=topBar.sizeDelta;//声明一个sizeDelta,并赋值为topBar.sizeDelta

sizeDelta.y+=changeSizeAmount*Time.deltaTime;//sizeDelta的y方向持续增加/减小,其实就是图片的宽

//根据下面两个方法,显示为正,隐藏为负

if(changeSizeAmount0)//点击显示的情况

if(sizeDelta.y=targetSize)//如果sizeDelta.y达到最大宽度

sizeDelta.y=targetSize;//设置sizeDelta的宽度

isActive=false;//停止变化

else//点击隐藏的情况

if(sizeDelta.y=targetSize)//如果sizeDelta.y达到最小宽度(0)

sizeDelta.y=targetSize;//设置sizeDelta的最小宽度(0)

isActive=false;//停止变化

//因为上下黑条对称,对上下黑条的宽度进行赋值

topBar.sizeDelta=sizeDelta;

bottomBar.sizeDelta=sizeDelta;

publicvoidShowBar()

targetSize=targetSizeInput;//点击显示,对宽度赋值(在Inspector面板中设定)

changeSizeAmount=(targetSize-topBar.sizeDelta.y)/showTime;//黑条的改变速率,这里为正数

isActive=true;//开始变化

publicvoidHide()

targetSize=0f;//点击隐藏黑条宽度为0

changeSizeAmount=(targetSize-topBar.sizeDelta.y)/showTime;//黑条的改变速率,这里为负数

isActive=true;//开始变化

然后设置合适的参数

分别为黑边的高度和黑边变化的时间

2.摄像头聚焦的效果

给摄像机搭载脚本CameraPos

publicclassCameraPos:MonoBehaviour

publicboolCamMove;//是否聚焦角色

publicfloatdistance;//距离角色的距离,可以用控制角色显示的大小

publicfloatfocusSpeed=5f;//聚焦的速度

privateVector3defaultPos;//摄像头默认位置

privateVector3targetPos;//聚焦目标的位置

privateboolisActive;//开始移动

privatevoidStart()

defaultPos=transform.position;

privatevoidUpdate()

if(isActiveCamMove)

transform.position=Vector3.Lerp(transform.position,targetPos,focusSpeed*Time.deltaTime);

publicvoidFocusOn(GameObjecttarget)//设置聚焦的目标

//注意这里的Z坐标不要大于0

targetPos=target.transform.position+newVector3(0,0,defaultPos.z+distance);

isActive=true;

publicvoidRese

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论