文章目录
- 每篇一句
- 前言
- 安装虚拟相机
- 跟随多个目标和间隙
- 占比
- 代码控制添加主角目标
- 代码控制添加敌人目标
- 扩展
- 代码如何实现虚拟相机跟随玩家呢?我们来实现一下
- 修改虚拟相机的视野
- 修改虚拟相机的位置和角度
- 推荐
- 完结
每篇一句
岂不闻天无绝人之路,只要我想走,路就在脚下!
前言
这种相机很适合用在格斗游戏或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。如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我可能也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~