Unity3D入门(二) :Unity3D实现视角的丝滑过渡切换

1. 前言

上篇文章,我们已经初步了解了Unity3D,并新建并运行起来了一个项目,使相机视角自动围绕着立方体旋转。 这篇文章,我们来讲一下Unity3D怎么过渡地切换视角。

我们继续是我上篇文章中的项目,但是需要向Camera Controller这个脚本删除,因为这会影响本文中的功能。

2. 添加材质

为了让立方体显示地更清楚,我们这里添加下材质。

Assets下右击,Create > Meterial

在这里插入图片描述

新建一个材质

在这里插入图片描述

将其颜色修改为蓝色

在这里插入图片描述

然后将这个材质拖到Cube立方体的Inspector面板中的Materials

在这里插入图片描述

可以发现,立方体的颜色立即发生了改变

在这里插入图片描述

3. 实现视角过渡切换

仅使用Camera的平移来实现视角变化,是不够顺滑的。
要实现视角的渐变,这里需要用到Cinemachine

Cinemachine是一个强大的相机(Camera)控制扩展系统,它极大地简化了Unity3D开发中相机操作的复杂性和工作量。通过引入虚拟摄像机的概念,Cinemachine允许开发者以更直观和灵活的方式控制游戏中的视觉呈现,从而增强游戏的沉浸感和视觉效果。

3.1 安装Clinemachine

点击Window > Package Manager

在这里插入图片描述

选择Packages:Unity Registry,找到Cinemachine,点击Install安装。

在这里插入图片描述

然后在Hierarchy面板右击,选择Cinemachine > Virtual Camera,添加虚拟相机

在这里插入图片描述

这里我添加了两个,分别重命名为Virtual Camera1Virtual Camera2,并把这两个虚拟相机摆放在不同位置,从而分别拥有不同的视角。

在这里插入图片描述

这个时候,可以看到,在Main CameraInspector面板中,多了一个CinemachineBrain组件

在这里插入图片描述

我们运行项目,通过启用和取消启用Virtual Camera1来切换Virtual Camera1Virtual Camera2的视角

在这里插入图片描述

可以看到视角渐变得切换了。

在这里插入图片描述

4. 导出到Android

接着我们可以将项目打包成apk,从而可以在Android中运行。 (需要注意,2.1 Unity安装步骤中Unity Hub需要安装Android平台)

我们点击File>Build Settings

在这里插入图片描述

这里我们还可以点击Player Settings,选择Landscape Left,这样我们生成的apk,默认情况下就会以横屏运行了。

在这里插入图片描述

导出Android,设置横屏 : unity在打包时设置手机屏幕横屏竖屏的方法_unity打包默认横屏-CSDN博客

接着点击BuildBuild And Run(构建并安装到手机里运行)

在这里插入图片描述

可以发现构建完成后,在项目目录下生成了一个apk文件

在这里插入图片描述

我们将这个apk安装到手机上

可以发现如下效果如下
在这里插入图片描述
虽然显示出来了蓝色的立方体,但是并没有按钮能触发视角的变化。
接下来,下一篇文章,我们会来实现Android与Unity的通信,点击Android按钮的时候,来切换Unity的视角。

5. Unity3D入门系列文章

Unity3D入门(一) : 第一个Unity3D项目,实现矩形自动旋转,并导出到Android运行
Unity3D入门(二) :Unity3D过渡切换视角
Unity3D入门(三) : Android和Unity3D交互 - Android调用Unity
Unity3D入门(四) : Android和Unity3D交互 - Unity调用Android

参考
Unity3D应用开发_中国大学MOOC

### 如何在 Unity 的 Timeline 中同时使用多个摄像机 在 Unity 的 Timeline 系统中,可以利用 `Camera` 组件以及特定的轨道来实现多摄像机切换或叠加的效果。以下是具体方法: #### 使用 PlayableDirector 和 Camera 轨道 Unity 提供了一个专门用于控制摄像机行为的功能——通过创建自定义脚本或者直接操作内置的 Track Asset 来管理不同摄像机的行为[^1]。 - 首先,在场景中设置好所有的摄像机对象,并确保它们都具有唯一的标签以便于区分。 - 接着,在 Timeline 编辑器里添加一条新的 **Control Track** 或者 **Cinemachine Shot Track**(如果正在使用 Cinemachine 插件)。这些轨道允许绑定不同的游戏对象作为目标节点。 ```csharp // Example of switching camera via script. public class CameraSwitcher : MonoBehaviour { public UnityEngine.Timeline.PlayableDirector director; void Start() { if (director != null && director.playableAsset is UnityEngine.Timeline.TimelineAsset) { Debug.Log("Playable Director initialized."); } } public void SwitchToTrack(int trackIndex){ var controlTracks = director.GetGenericBinding(typeof(UnityEngine.Timeline.ControlTrack)); foreach(var ct in controlTracks){ // Logic to activate specific tracks or cameras here... } } } ``` 上述代码片段展示了如何通过编程方式访问并激活指定索引下的 Control Tracks[^2]。 #### 设置优先级与渲染顺序 为了防止多个摄像机相互干扰,需调整其 Culling Mask 属性以及 Depth 参数。较低数值代表更早被绘制到屏幕上;因此,背景层通常分配较高的 depth 值而前景则相反[^3]。 另外还可以启用 Orthographic Mode 或 Perspective Mode 来改变视角呈现效果,进一步增强视觉层次感。 #### 利用 Post-processing Effects 当涉及复杂过渡动画时,可考虑引入后期处理特效(Post Processing Stack),比如淡入淡出、模糊渐变等技术手段平衔接各镜头之间的转换过程[^4]。 ```json { "profile": { "name": "FadeInOut", "settings": [ {"type":"Vignette", "intensity":0}, {"type":"ColorGrading", "temperature":5000, "tint":-789} ] }, ... } ``` 以上 JSON 数据结构举例说明了配置文件的一部分内容,实际应用过程中可能还需要额外扩展其他参数选项以满足项目需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值