【Unity小技巧】如何在 Unity 中使用我们的Cinemachine虚拟相机跟踪多个目标

news2024/9/23 17:23:45

文章目录

  • 每篇一句
  • 前言
  • 安装虚拟相机
  • 跟随多个目标和间隙
  • 占比
  • 代码控制添加主角目标
  • 代码控制添加敌人目标
  • 扩展
    • 代码如何实现虚拟相机跟随玩家呢?我们来实现一下
    • 修改虚拟相机的视野
    • 修改虚拟相机的位置和角度
  • 推荐
  • 完结

每篇一句

岂不闻天无绝人之路,只要我想走,路就在脚下!

前言

这种相机很适合用在格斗游戏或boss战之类的

大致效果
在这里插入图片描述

安装虚拟相机

实现相机抖动的最简单方法是使用cinemachine虚拟相机
导入cinemachine插件
搜索Cinemachine,安装并导入
在这里插入图片描述
新建可以跟随多个目标的虚拟相机
在这里插入图片描述
这个TargetGroup物体上挂着CinemachineTargetGrouop组件,通过它可以实现虚拟相机同时追踪多个物体的效果(原理是动态调整相机的Field Of View来确保多个物体都在画面以内),参数比较简单,主要是设置多个对象物体到列表中即可
在这里插入图片描述
看看官方的案例效果
在这里插入图片描述

跟随多个目标和间隙

挂载玩家和敌人
在这里插入图片描述
效果
在这里插入图片描述
修改间隙
在这里插入图片描述

占比

为了更好的适用我们的游戏,我们删除原来的虚拟相机,添加2D Camera
在这里插入图片描述
重新添加
在这里插入图片描述
挂载TargetGroup1到Follow
在这里插入图片描述
权重控制对象屏幕占比
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码控制添加主角目标

using UnityEngine;
using Cinemachine;

public class AgregarElementos : MonoBehaviour
{
	private CinemachineTargetGroup cinemachineTargetGroup;
	private GameObject jugador;
	
	// 声明私有成员变量enemigos,用于存储所有敌人的游戏对象
	private GameObject[] enemigos;
	
	// Start()方法,在脚本挂载的时候被调用
	private void Start()
	{
	    // 获取CinemachineTargetGroup组件
	    cinemachineTargetGroup = GetComponent<CinemachineTargetGroup>();
	
	    // 通过标签查找游戏对象"Player"
	    jugador = GameObject.FindGameObjectwithTag("Player");
	
	    // 将玩家的transform添加到CinemachineTargetGroup中
	    cinemachineTargetGroup.AddMember(jugador.transform,1,1);
	}
}

记得配置主角的标签
在这里插入图片描述
运行效果,添加了我们的主角
在这里插入图片描述

代码控制添加敌人目标

enemigos = Gameobject.FindGameObjectswithTag("Enemigo");
foreach (Gameobject enemigo in enemigos){
	cinemachineTargetGroup.AddMember(enemigo.transform,1,1);
}

效果,记得配置好敌人的标签
在这里插入图片描述
复制多个敌人
在这里插入图片描述

扩展

代码如何实现虚拟相机跟随玩家呢?我们来实现一下

// 引入Unity引擎和Cinemachine插件
using UnityEngine;
using Cinemachine;

public class SeguirObjetivo : MonoBehaviour
{
	private CinemachineVirtualCamera cinemachineVirtualCamera;
	
	private void Start()
	{
		// 获取CinemachineVirtualCamera组件
	    cinemachineVirtualCamera = GetComponent<CinemachineVirtualCamera>();
	
	    // 设置CinemachineVirtualCamera的跟随目标为标签为"Player"的游戏对象的transform
	    cinemachineVirtualCamera.Follow = GameObject.FindGameobjectwithTag("Player").transform;
	}
}

其实就是运行时,会自动挂载Player到Follow
在这里插入图片描述
效果
在这里插入图片描述

修改虚拟相机的视野

用于放大或者缩小相机视野,我们见的最多的应该就是用在FPS枪械瞄准功能了

// 将CinemachineVirtualCamera的视野设置为20度
cinemachineVirtualCamera.m_Lens.FieldOfView = 20f;

效果
在这里插入图片描述

修改虚拟相机的位置和角度

通过修改虚拟摄像机的跟随偏移,可以调整摄像机在游戏场景中的位置和角度,以实现不同的视觉效果和跟随目标的方式。

// 获取CinemachineTransposer组件,并设置跟随偏移为(0,3,-20)
cinemachineVirtualCamera.GetCinemachineComponent<CinemachineTransposer>().m_FollowOffset = new Vector3(0, 3f, -20f);

效果
在这里插入图片描述

推荐

虚拟相机的内容其实还有很多,还不懂的建议去看看发哥的这篇文章:
Unity Cinemachine快速上手,详细案例讲解

我觉得他说的还是很细和全面的,所有推荐给大家,感兴趣的可以去看看

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。点赞越多,更新越快哦!当然,如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,于是最近才开始自习unity。如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我可能也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

变压器分析

参考方向 如图所示&#xff0c;是变压器的原理图。其中&#xff0c; ϕ \phi ϕ是变压器铁芯的有效磁通&#xff0c; ϕ 1 \phi_1 ϕ1​是主线圈的漏磁通&#xff0c; ϕ 2 \phi_2 ϕ2​是副线圈的漏磁通。图中 u 1 u_1 u1​为初级线圈输入电压&#xff0c; i 1 i_1 i1​为初级…

iOS Autolayout 约束设置【顺序】的重要性!

0x00 顺序不同&#xff0c;结果不同 看图说话 1 代码是这样滴~ 设置好约束&#xff0c;让 4 个按钮&#xff0c;宽度均分~ 结果如上图 [_pastButton.topAnchor constraintEqualToAnchor:_textView.bottomAnchor constant:6].active YES;[_pastButton.leftAnchor constraintEq…

电子学会C/C++编程等级考试2023年05月(四级)真题解析

C/C等级考试&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;怪盗基德的滑翔翼 怪盗基德是一个充满传奇色彩的怪盗&#xff0c;专门以珠宝为目标的超级盗窃犯。而他最为突出的地方&#xff0c;就是他每次都能逃脱中村警部的重重围堵&#xff0c;而这也很大程度…

云原生安全:如何保护云上应用不受攻击

文章目录 云原生安全的概念1. 多层次的安全性2. 自动化安全3. 容器安全4. 持续监控5. 合规性 云原生安全的关键挑战1. 无边界的环境2. 动态性3. 多云环境4. 容器化应用程序5. API和微服务 如何保护云上应用不受攻击1. 身份验证和访问控制示例代码&#xff1a; 2. 数据加密示例代…

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh

时间序列分析在金融和医疗保健等领域至关重要&#xff0c;在这些领域&#xff0c;理解随时间变化的数据模式至关重要。在本文中&#xff0c;我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库…

深入浅出排序算法之计数排序

目录 1. 原理 2. 代码实现 3. 性能分析 1. 原理 首先看一个题目&#xff0c;有n个数&#xff0c;取值范围是 0~n&#xff0c;写出一个排序算法&#xff0c;要求时间复杂度和空间复杂度都是O(n)的。 为了达到这种效果&#xff0c;这一篇将会介绍一种不基于比较的排序方法。这…

Day 11 python学习笔记

模块 内置模块 random random&#xff1a;随机数模块 我们可以在解释器中看到其蕴含的方法 接下来我解释一些常用的方法&#xff1a; random.random( ) random.random( ) 返回0-1的随机数 [0,1) >>> random.random() 0.364183511476754 random.randint(n,m) r…

Java JSON字符串转换成JSON对象

方法一&#xff1a;要先转为LinkedHashMap&#xff0c;再转json&#xff08;推荐&#xff0c;我使用这种方法&#xff09; String jsonStr"{\"id\":\"10001\",\"name\":\"肉类\",\"menus\":[{\"name\":\&qu…

Node切换版本

以非安转版本方式安装Node&#xff0c;经常会需要进行Node的版本切换。 官方的做法是&#xff1a;nvm use version。 但是这种方法经常会失败。如下&#xff1a; 其实nvm命令的本质就是给当前node版本添加一个快捷方式&#xff08;或软连接&#xff09;&#xff0c;因为环境变…

AT800(3000) +昇腾300V 之一 环境部署

环境部署 背景服务器 硬件资源系统&#xff1a;CPU&#xff1a;NPU&#xff1a;固件与驱动CANN 背景 因nvidia 受限 公司转华为推理服务器 AT800&#xff08;3000&#xff09; 昇腾 &#xff0c;将推出一系列文章 &#xff0c;记录过程。 服务器 硬件资源 系统&#xff1a;…

再畅通工程(最小生成树)

题目描述&#xff1a;还是畅通工程 某省调查乡村交通状况&#xff0c;得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通&#xff08;但不一定有直接的公路相连&#xff0c;只要能间接通过公路可达即可&#xff09;&…

轻量封装WebGPU渲染系统示例<6>-混合模式(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/BlendTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. 用户…

8086汇编环境的使用

先打开emu8086&#xff0c;写入代码 ;给11003H的地址赋1234H的值;不能直接给DS赋值需要寄存器中转 mov dx, 1100H mov ds, dx mov ax, 1234H ;不能直接给内存地址赋值&#xff0c;需要DS:[偏移地址]指向内存 mov [3H], ax 点击emulate开始模拟 出现调试框&#xff0c;调试框的…

moviepy处理手机端图片旋转问题

1.手机拍摄的图片或者在ffmpeg处理的时候&#xff0c;会读取图片的元数据从而进行旋转 左边是拍摄的图片&#xff0c;右侧是进行处理以后得图片 video VideoFileClip(file_path) if video.rotation in (90, 270):video video.resize(video.size[::-1])video.rotation 0

Live800:智能客服的意义和价值

近年来&#xff0c;智能客服系统的出现引起了各行各业的共同关注&#xff0c;成为了许多企业在数字化转型中的重要步骤之一。智能客服系统能够帮助企业降低人力成本&#xff0c;提高客户满意度&#xff0c;对于企业而言具有不可替代的价值和意义。 智能客服系统的主要价值包括以…

Diffusion Models视频生成-博客汇总

0、【论文汇总】Diffusion Models视频生成/视频编辑/可控视频生成/跨模态视频生成 本文总结了Diffusion Models视频生成领域相关的工作,目前共收录142篇,持续更新中。 1、Video Diffusion Models:基于扩散模型的视频生成 扩散模型已经被广泛运用到图像生成、image-to-image转…

网络搭建和运维的基础题目

服务部分&#xff08;linux&#xff09; 实操部分 1.在任意文件夹下面创建形如 A/B/C/D 格式的文件夹系列。 [rootlocalhost ~]# mkdir -p A/B/C/D 2.在创建好的文件夹下面&#xff0c;A/B/C/D &#xff0c;里面创建文本文件 mkdir.txt [rootlocalhost ~]# cd A/B/C/D [r…

前端跨页面通信,你知道哪些方法?

一、同源页面 1.广播站模式 一个页面将消息通知给一个“中央站”&#xff0c;再由“中央站”通知给各个页面&#xff0c;以下会介绍这个中央站可以是LocalStorage&#xff0c;可以是BroadCast Channel实例&#xff0c;也可以是一个Service worker 1.1.LocalStorageStorageEven…

[AUTOSAR][诊断管理][ECU][$27] 安全访问

文章目录 一、简介$27服务有何作用,为什么要有27服务呢?功能描述应用场景安全解锁基本原理服务请求服务响应Verify Key负响应NRC支持二、常见Bug大揭秘三、示例代码uds27_security_access.c一、简介 $27服务有何作用,为什么要有27服务呢? 功能描述 根据ISO14119-1标准中…

网络基础-3

路由开销 一条路由的开销时指到达这条路由的目的地/掩码需要付出的带价值。同一种路由协议发现有多条路由可以到达同一目的地/掩码时&#xff0c;将优选开销最小的路由&#xff0c;即只把开销最小的路由加入进本协议的路由表中。 路由协议 内部网关协议&#xff08;IGP&…