怎么利用Unity制作特写镜头
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了怎么利用Unity制作特写镜头的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用Unity制作特写镜头文章都会有所收获,下面我们一起来看看吧。类似这
千家信息网最后更新 2025年11月07日怎么利用Unity制作特写镜头
这篇文章主要介绍了怎么利用Unity制作特写镜头的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用Unity制作特写镜头文章都会有所收获,下面我们一起来看看吧。
类似这种效果
黑边的大小可以自行调整
这里为了方便直接用两个Button绑定了方法,有需要自行调用方法

1.首先制作上下两层黑边
创建Canvas然后在canvas上新建空物体,命名为CinemaCloseUpShot
在上面新建脚本CinemaCloseUP
public class CinemaCloseUP : MonoBehaviour{ public float targetSizeInput; //上下黑条的宽度 public float showTime; //进行缩放所需的时间 private RectTransform topBar, bottomBar; //声明上下两个 RectTransform,该组件在UI中控制UI大小、位置等参数 private float changeSizeAmount; //上下黑条变化量 private bool isActive; //是否进行特写 private float targetSize; // private void Awake() { //创建上方黑条,类型为图片 GameObject gameObject = new GameObject("topBar", typeof(Image)); gameObject.transform.SetParent(transform, false); //将之前的空物体设为父物体 gameObject.GetComponent().color = Color.black;//颜色设为黑色 topBar = gameObject.GetComponent(); //获取黑条图片的RectTransform //将上方图片的锚点设为(0, 1)和(1, 1),其实就是父物体的左上角和右上角两个锚点 topBar.anchorMax = new Vector2(1, 1); topBar.anchorMin = new Vector2(0, 1); topBar.sizeDelta = new Vector2(0, 0); //默认图片大小为0 //创建下方黑条,类型为图片 gameObject = new GameObject("bottomBar", typeof(Image)); gameObject.transform.SetParent(transform, false); gameObject.GetComponent().color = Color.black; bottomBar = gameObject.GetComponent(); //将下方图片的锚点设为(0, 0)和(1, 0),其实就是父物体的左下角和右下角两个锚点 bottomBar.anchorMax = new Vector2(1, 0); bottomBar.anchorMin = new Vector2(0, 0); bottomBar.sizeDelta = new Vector2(0, 0);//默认图片大小为0 } private void Update() { if (isActive) { Vector2 sizeDelta = topBar.sizeDelta; //声明一个sizeDelta,并赋值为topBar.sizeDelta sizeDelta.y += changeSizeAmount * Time.deltaTime;//sizeDelta的y方向持续增加/减小,其实就是图片的宽 //根据下面两个方法,显示为正,隐藏为负 if (changeSizeAmount > 0) //点击显示的情况 { 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; } } public void ShowBar() { targetSize = targetSizeInput; //点击显示,对宽度赋值(在Inspector面板中设定) changeSizeAmount = (targetSize - topBar.sizeDelta.y) / showTime; //黑条的改变速率,这里为正数 isActive = true; //开始变化 } public void Hide() { targetSize = 0f; //点击隐藏黑条宽度为0 changeSizeAmount = (targetSize - topBar.sizeDelta.y) / showTime; //黑条的改变速率,这里为负数 isActive = true; //开始变化 }} 然后设置合适的参数
分别为黑边的高度和黑边变化的时间

2.摄像头聚焦的效果
给摄像机搭载脚本CameraPos
public class CameraPos : MonoBehaviour{ public bool CamMove; //是否聚焦角色 public float distance; //距离角色的距离,可以用控制角色显示的大小 public float focusSpeed = 5f; //聚焦的速度 private Vector3 defaultPos; //摄像头默认位置 private Vector3 targetPos; //聚焦目标的位置 private bool isActive; //开始移动 private void Start() { defaultPos = transform.position; } private void Update() { if (isActive && CamMove) { transform.position = Vector3.Lerp(transform.position, targetPos, focusSpeed * Time.deltaTime); } } public void FocusOn(GameObject target) //设置聚焦的目标 { //注意这里的Z坐标不要大于0 targetPos = target.transform.position + new Vector3(0, 0, defaultPos.z + distance); isActive = true; } public void ResetPos() //还原摄像头位置 { targetPos = defaultPos; isActive = true; }}设置合适参数
注意这里Distance计算后的Z坐标不要大于0,可以在代码中添加限制
显示效果:
关于"怎么利用Unity制作特写镜头"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么利用Unity制作特写镜头"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
图片
宽度
上下
变化
特写
制作
两个
大小
物体
镜头
位置
摄像
参数
就是
摄像头
效果
方法
知识
角色
合适
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
鸿特科技与互联网金融
交换机与服务器连接用什么光模块
数据库模型与面向对象模型的区别
传奇数据库m2下载
网络技术员岗位的工作职责与内容
泉州数据库修复
雨花台区第三方软件开发
数据库原理怎样分析数据冗余
mysql数据库封装类
宁夏办公软件开发设计方案
厦门计算机软件开发专业简历模板
思科软件开发工程师
pos上显示连接服务器失败怎么解决
工程项目采购数据库
大连门禁软件开发公司
数据库行锁并发问题
软件开发 输出文档
关于网络安全的教案设计
雪球 网络安全
数据库引擎不用b
在数据库表中添加新属性
mysql数据库设置密码
数据库pi的含义
木链科技药企工业互联网
sas数据库无法分配逻辑库
闵行区品牌软件开发定制平均价格
关于软件开发中的闭合原则
中学生网络安全应该怎么做
怎么查看服务器cpu
红动数据库