unity相机插件Cinemachine的使用笔记

首先导入插件,本插件主要用于做相机控制,先

记录三个小功能的使用方法。

第一,多个视角的切换。如果在场景中需要进行视角切换,首先点击菜单栏Cinemachine->Create Virtual Camera,就可以得到一个虚拟相机。

这些虚拟相机都是被主摄像机控制的,并不是真实存在的。

调整相机的角度,可以点击虚拟相机上的solo按钮来查看当前相机的视角

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using UnityEngine.PostProcessing;

public class CameraManager : MonoBehaviour
{
    public static CameraManager Instance;
     
    public CinemachineBrain CameraBrainScript;

    public List<CinemachineVirtualCamera> childCameraLst = new List<CinemachineVirtualCamera>();

    public CinemachineVirtualCamera CameraFollow;

    private PostProcessingBehaviour localProfile;

    public FireItem TargetFireItem;

    void Awake()
    {
        Instance = this;
    }
	// Use this for initialization
	void Start ()
    {
        CinemachineVirtualCamera[] cameras = this.transform.GetComponentsInChildren<CinemachineVirtualCamera>();
        for (int i = 0; i < cameras.Length; i++)
        {
            childCameraLst.Add(cameras[i]);
        }
        childCameraLst[0].MoveToTopOfPrioritySubqueue();

        localProfile = CameraBrainScript.transform.GetComponent<PostProcessingBehaviour>();

        localProfile.profile.vignette.settings = new VignetteModel.Settings()
        {
            mode = VignetteModel.Mode.Classic,
            color = Color.black,
            center = new Vector2(0.5f, 0.5f),
            intensity = 0.45f,
            smoothness = 0.2f,
            roundness = 1,
            rounded = false,
        };

    }


    private float i=0;
	// Update is called once per frame
	void Update ()
    {
        if (TargetFireItem.IsHappened)
        {
            i += 0.01f;
            localProfile.profile.vignette.settings = new VignetteModel.Settings()
            {
                mode = VignetteModel.Mode.Classic,
                color = Color.red,
                center = new Vector2(0.5f, 0.5f),
                intensity = Mathf.PingPong(i,0.5f),
                smoothness = 0.28f,
                roundness = 1,
                rounded = false,
            };
        }
        else
        {
            localProfile.profile.vignette.settings = new VignetteModel.Settings()
            {
                mode = VignetteModel.Mode.Classic,
                color = Color.white,
                center = new Vector2(0.5f, 0.5f),
                intensity = Mathf.PingPong(i, 0.5f),
                smoothness = 0.28f,
                roundness = 1,
                rounded = false,
            };
        }
	}

    public int index = 0;
    public void SwitchCamera()
    {
        index++;
        index = index % 5;
        Debug.Log("难道没有执行" + index);
        for (int i = 0; i < childCameraLst.Count; i++)
        {
            if (index==i)
            {
                Debug.Log("开启了Camera的相机"+index);
                childCameraLst[index].MoveToTopOfPrioritySubqueue();
            }
        } 
    }

 

第二个作用是做人物跟随,在虚拟相机的面板设置任务跟随的对象以及注视的对象部位,就可以实现跟随了,同时可以设置跟随抖动等特效。

第三,结合timeline实现相机融合。


将拍摄对象动画放在上面,然后分别设置三个虚拟相机对着对象不同的身体部位,本例子实现了镜头从腿到头到背后的镜头过度融合。

第四,轨道摄像机

轨道相机分为两种,第一种是直接生成一个会跟随轨道运动的摄像机,第二种生成一个叫DollyCart的物体,需要自己生成一个虚拟相机置于DollyCart下。

第五,自由观察相机 FreeLook Camera

此相机用于针对一个物体进行观察,相机组件提供了上、中、下以及纵向四个相机运动轨迹。(一定要对follow和look at两个值都赋值,才会出现三个圈)

四个圈形运动轨迹分别代表围绕目标物体的四种观察路线,当物体在运动过程中,可以通过控制以下x,y的参数控制相机在四个轨迹中过渡。

该相机存在一个很大的问题是,物体的transform和相机的视角没有直接关系,所以不能够通过此相机来对ui进行交互,而且也不能根据虚拟相机的transform来在视野的前方生成3d ui。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity Cinemachine插件Unity引擎中的一个相机控制工具,它可以帮助开发者更轻松地创建复杂的相机动画和过渡效果,同时还可以自动调整相机的位置和角度,以确保最佳的视觉效果。该插件还提供了一些高级功能,如虚拟相机、跟踪目标、深度感知等,可以帮助开发者更好地控制游戏中的相机行为。 ### 回答2: Unity Cinemachine插件是一个高度自适应的相机系统,用于帮助Unity开发者轻松地创建动态的镜头。这个插件不仅仅是摄像机的配置,而是提供了一个全新的方法来设计人物行动和摄像机的交互,借此来增强某一场景的表现力。Cinemachine能为不同的开发者提供个性化的解决方案,因为开发者可以在不触及代码的情况下,使用各种不同类型的虚拟相机 - 跟随、先进、自由移动等不同类型的摄像机,因此它比较适合小团队与独立游戏开发者,因为它可以不用投资大量的资源到时光秀或其他高质量动画。 Unity Cinemachine提供了独特而有效的相机控制方案,可以根据游戏中不同情境下的需求来快速适应不同相机的设置,比如,在自定义可编程的相机轨迹上进行摄像机角度的调整。此外, Unity Cinemachine还提供了高度集成的相机控制API,游戏开发者可以通过自己的脚本将其与自己的游戏系统集成,以实现自己的相机控制逻辑。 总结起来,Unity Cinemachine插件提供了极大的灵活性和控制能力,同时也简化了开发者的工作,让开发者能够更容易地设计一个兼顾美感和功能性的虚拟镜头。有了该插件,游戏开发者能够将注意力更多地转移到游戏的核心玩法之上。 ### 回答3: Unity CinemachineUnity3D中一款非常强大的相机架构插件,可以帮助我们轻松地创建高质量的摄影效果,包括镜头移动、对焦、深度效果和视野控制等等。 Unity Cinemachine 插件的最大优势在于其高度的可定制性,这使得它可以适应各种不同的游戏类型和场景需求。用户可以通过图形化界面对插件进行配置,而不必编写复杂的代码。通过使用插件,开发人员可以更加轻松地创建出高质量的游戏体验,节约了大量的时间和精力。 Unity Cinemachine 插件中的一个重要组件是 Virtual Camera,它可以让我们在场景中创建一个虚拟相机,然后通过配置其属性和参数,来调整场景的视觉效果,包括摄像头的位置、方向、移动速度和旋转等等。我们可以使用 Cinemachine 实现丰富多样的摄像头特效和运动效果,例如深度效果、镜头晃动等。这些特效可以使游戏更加真实、动态和生动。 此外,Unity Cinemachine 插件还提供了流畅的镜头转换功能,可以让我们在场景中平滑地切换不同的相机视角,避免了不流畅的过渡和闪屏问题。 总之,Unity Cinemachine 插件Unity3D开发者非常实用的插件之一,它能够帮助我们轻松地创建出高质量的游戏体验,提高了游戏开发的效率和可拓展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值