[方法] Unity 实现仿《原神》第三人称跟随相机 v1.0

参考网址:【Unity中文课堂】RPG战斗系统Plus

在Unity游戏引擎中,实现类似《原神》的第三人称跟随相机并非易事,但幸运的是,Unity为我们提供了强大的工具集,其中Cinemachine插件便是实现这一目标的重要工具。Cinemachine是一款专为Unity设计的相机控制插件,它提供了丰富的预设和灵活的相机控制选项,本篇我们会利用Cinemachine中的FreeLook Camera来作为第三人称跟随相机,它允许玩家从角色的背后观察游戏世界,增加了游戏的视野和代入感。

1. 下载Cinemachine插件

依次单击Unity的顶部菜单栏 Window | Package Manager 打开包管理器,选择 Packages  Unity Registry,然后搜索 Cinemachine,将其下载到项目中。

2. 设置相机的跟随目标

Hierachy 面板里通过单击 Cinemachine | FreeLook Camera 来添加一个第三人称相机,然后创建一个空对象 Cameras,并将 FreeLook CameraMain Camera 作为子对象放在进去。

我们在玩家对象里创建一个名为 CameraTarget 的空子对象作为相机的跟随和观察目标,并将其移动到角色的腹部位置:

选中 FreeLook Camera,在 Inspector 面板的 CinemachineFreeLook 组件里把跟随目标和观察目标都设置为 CameraTarget ,如下图所示:

3. 相机参数配置

3.1. 镜头环绕移动

默认情况下,镜头的上下左右的环绕移动是颠倒的,我们需手动将其改正过来:

3.2. 设置相机的活动范围

选中 FreeLook Camera,在 Scene 面板中环绕角色的红线则为相机的移动轨道,它表示相机的可活动范围,如图所示:

 我们可通过 TopRigMiddleRigBottomRig 来分别调节相机的顶部、中部、底部的活动范围:

一般情况下,TopRigBottomRigRadius 我们都设置为0,然后 TopRigHeight 一般都高出三个模型左右:

BottomRigHeight 设置在正好到模型的脚底:

MiddleRigHeight 一般都设置得高出模型一头,且 Radius 要尽量宽广:

最终效果如GIF所示:

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

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

相关文章

从键入网址到网页显示,期间发生了什么?

从键入网址到网页显示,期间发生了什么? 孤单小弟【HTTP】真实地址查询【DNS】指南帮手【协议栈】可靠传输【TCP】远程定位【IP】两点传输【MAC】出口【网卡】送别者【交换机】出境大门【路由器】互相扒皮【服务器与客户端】相关问答 不少小伙伴在面试过程…

常用外贸营销软件推荐

在外贸营销中,选择合适的软件工具可以极大地提高工作效率和营销效果。以下是一些常用的外贸营销软件推荐: 易谷歌地图数据采集大师:专为做外贸的朋友开发的一款基于谷歌地图数据采集的软件,可以采集任意国家、任意地区的公司地址、…

《21天学通C++》(第十五章)标准模板库简介

本章简单介绍STL容器、迭代器和算法的基本概念,之后几章会分别详述 1.STL容器 STL容器是STL中用于存储集合数据的组件,它们可以被看作是模板类,允许开发者定义特定类型的容器发,这里按照C11标准分为四类:顺序容器、关…

Qt5 框架学习及应用 — 对象树

Qt 对象树 对象树概念Qt为什么使用对象树 ?将对象挂到对象树上 对象树概念 对象树:对于树的概念,相信许多学过数据结构的同学应该都不会陌生。在学习数据结构的时候我们所接触的什么二叉树、多叉树、哈夫曼树、AVL树、再到红黑树、B/B树………

ubuntu-meta-22.04桌面版+ros2-humble 镜像

ubuntu-meta-22.04桌面版ros2-humble 镜像 下载地址: 链接:https://pan.baidu.com/s/1PSBe4EqWch44OQUlkCCEig?pwdknty 提取码:knty 镜像文件较大,分成了两个压缩包,下载后直接解压ubuntu22.04-desk-meta-ros2-arm (…

vue处理查询框清除后无法查询问题,举例为日期选择

例如 在对应的查询方法添加 //我这里获取的是date,如果是其他参数改为其他的即可 if (query.date && query.date.length > 2) {conditions.noedate query.date[0] || conditions.noedate;//获取开始时间conditions.twodate query.date[1] || conditi…

数据库漫谈-发展简史

数据管理最早都是开发者自行定义的,应用和数据管理是一体的,没有独立的数据管理系统。1961年为了支持阿波罗计划的执行,IBM开发了ICS数据库,这是个层次数据库,是最早的大型数据库。另一个巨头GE公司看到ICS的问题&…

实验14 MVC

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握MVC的用法。【参考课本 例1 】 三、源代码以及执行结果截图&#xff1a; example7_1.jsp&#xff1a; <% page contentType"text/html" %> <% page pageEncoding "ut…

PHP医院安全(不良)事件报告系统源码 vue2+element支持11大类不良事件上报、审核处理、分析改进

PHP医院安全&#xff08;不良&#xff09;事件报告系统源码 vue2element支持11大类不良事件上报、审核处理、分析改进 医院安全&#xff08;不良&#xff09;事件管理系统采用无责的、自愿的填报不良事件方式&#xff0c;有效地减轻医护人员的思想压力&#xff0c;实现以事件为…

某招聘网站搜索结果接口之acw_sc__v2逆向

上文链接 某招聘网站搜索结果接口逆向之webpack扣取 分析参数 acw_sc__v2 663449dacb63fbe529520fb21063cf354dbce1cf 既然在Cookie中那么需要借助Hook脚本 (function() {//严谨模式 检查所有错误use strict;var cookieTemp "";Object.defineProperty(document,…

基于SpringBoot的考务管理系统 - 源码免费(私信领取)

1. 研究目的 本项目旨在设计并实现一个基于Spring Boot的考务管理系统&#xff0c;以提高考试管理的效率&#xff0c;简化考试流程&#xff0c;确保考试的顺利进行。 2. 研究要求 a. 需求分析 通过深入了解考务管理流程和需求&#xff0c;分析用户对考试管理系统的需求&…

springboot+websocket开发简单的在线群聊聊天web版本

springbootwebsocket开发简单的在线群聊聊天web版本&#xff01;近期在测试websocket插件的群聊功能。下面是一个简单的demo。分享给大家&#xff0c;亲测可以使用的。 1&#xff1a;首先是一个chat.html页面。代码如下&#xff1a; <!DOCTYPE html> <html lang"…

Centos 启动jar包的详细步骤

一、准备工作 1.1 创建目录和日志文件 在linux系统&#xff0c;你认为合理的地方创建一个目录&#xff0c;可以用来存放所有项目的jar包&#xff0c;也可以每一个项目创建一个目录存放单独的jar包。 #解释&#xff1a;新建projectName目录 命令&#xff1a;mkdir projectNam…

Linux学习之路 -- 文件 -- 文件操作

在学习C语言时&#xff0c;我们就学习过文件相关的内容&#xff0c;但是由于知识储备尚且不足&#xff0c;无法深入的了解文件&#xff0c;下面我们就要重新认识一下文件。 <1> 简单介绍(铺垫) 1.前面我们说过&#xff0c;文件 内容 属性&#xff0c;所以我们对文件的…

GO语言核心30讲 进阶技术 (第一部分)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、数组和切片 1. 两者最大的不同&#xff1a;数组的长度是固定的&#xff0c;而切片的长度是可变的。 2. 可以把切片看成是对数组的一层封装&#xff0c;因为每个切片的底层数据结构中&#xff0c;一定会包含一…

4.2_文本处理工具

## 1.grep ## grep [Globally search a Regular Expression and Print] &#xff08;1&#xff09;grep 格式 ##grep 格式## grep 匹配条件 处理文件 grep root passwd #过滤root关键字 grep -E egrep #扩展搜索 grep -i root passwd ##忽…

【leetcode】优先队列题目总结

优先队列的底层是最大堆或最小堆 priority_queue<Type, Container, Functional>; Type是要存放的数据类型Container是实现底层堆的容器,必须是数组实现的容器,如vector、dequeFunctional是比较方式/比较函数/优先级priority_queue<Type>; 此时默认的容器是vect…

深度学习之基于Vgg16卷积神经网络印度交警手势识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着智能交通系统的发展&#xff0c;手势识别技术成为了一个关键组成部分&#xff0c;特别是在交通管…

基于SSM SpringBoot vue宾馆网上预订综合业务服务系统

基于SSM SpringBoot vue宾馆网上预订综合业务服务系统 系统功能 首页 图片轮播 宾馆信息 饮食美食 休闲娱乐 新闻资讯 论坛 留言板 登录注册 个人中心 后台管理 登录注册 个人中心 用户管理 客房登记管理 客房调整管理 休闲娱乐管理 类型信息管理 论坛管理 系统管理 新闻资讯…

ArrayList还是LinkedList?

引言 集合作为一种存储数据的容器&#xff0c;是我们日常开发中使用最频繁的对象类型之一。JDK为开发者提供了一系列的集合类型&#xff0c;这些集合类型使用不同的数据结构来实现。因此&#xff0c;不同的集合类型&#xff0c;使用场景也不同。 很多同学在面试的时候&#x…