Unity | Cinemachine 2D 设置边界及错误记录

news2024/11/27 17:50:20

1 背景介绍

在使用大地图的项目中,通常需要摄像机跟随玩家移动,而且需要根据地图尺寸限制摄像机的边界

借助 Cinemachine 及其扩展组件 CinemachineConfiner 可以很方便的实现该功能,但这次遇见一个问题:运行时,当摄像机碰到设置正确的边界时,位置发生偏移,且不再跟随玩家移动,特此记录,谨防老年痴呆

2 摄像机跟随及边界设置

2.1 安装 Cinemachine

打开 Window > Package Manager

Packages 选择 Unity Registry,搜索 Cinemachine 关键字后选择并安装即可

2.2 使用 Cinemachine

  1. 在 Hierarchy 面板中新建 Cinemachine > 2D Camera

  2. 拖拽玩家对象到 Cinemachine 的 Follow 中

  3. 在 Add Extension 中选择 CinemachineConfiner,会自动添加该组件

  4. 在 Hierarchy 创建 PolygonCollider2D 对象

  5. 拖拽边界对象到 CinemachineConfiner 的 bounding Shape 2D 中

  6. 根据地图尺寸动态设置 PolygonCollider2D 的角点位置

List<Vector2> points = new List<Vector2>();
points.Add(new Vector2(leftBottom.x, leftBottom.y));
points.Add(new Vector2(rightTop.x, leftBottom.y));
points.Add(new Vector2(rightTop.x, rightTop.y));
points.Add(new Vector2(leftBottom.x, rightTop.y));
this.polygonCollider2D.points = points.ToArray();

其中四个角点的顺序没有要求,只要能闭合形成矩形就可以,这里依次是左下 > 右下 > 右上 > 左上

3 错误表现及解决方案

运行后,当摄像机碰到边界时,位置发生偏移,且不再跟随玩家移动,但通过编辑器可以看到,边界的设置是正确的

经过一番尝试后,发现是因为在创建 PolygonCollider2D 后,只将其更改为 4 个角点,并没有改变尺寸,也就是初始尺寸小于摄像机尺寸

当把 PolygonCollider2D 的初始尺寸设置为大于等于摄像机尺寸时,就可以正常触发边界限制

运行时效果

更多手记,请扫码领取

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

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

相关文章

世界杯今日胜负预测(阿根廷VS沙特阿拉伯,丹麦VS突尼斯)

首先是今天开局的两场 阿根廷VS沙特阿拉伯————阿根廷胜 理由&#xff1a; 1、国家队世界男足排名第三 2、在今年阿根廷的近期战绩 3、经常关注世界杯的粉丝观点 4、抖音平台预测数据&#xff0c;截止时间14:46 丹麦VS突尼斯————丹麦胜 理由&#xff1a; 1、丹麦国…

CPT-CY3/CY5/CY7/CY7.5/花菁染料CY3/Y5/CY7/CY7.5/抗Trop-2 IgG抗体偶联顺铂的制备

小编今天给大家分享了CPT-CY3/CY5/CY7/CY7.5/花菁染料CY3/Y5/CY7/CY7.5/抗Trop-2 IgG抗体偶联顺铂的制备方法&#xff0c;一起来看看。 抗Trop-2 IgG抗体偶联顺铂的制备&#xff1a; 转染Trop-2质粒至293F细胞,利用Protein A亲和柱纯化,获得人源抗Trop-2 IgG抗体.酶联免疫吸附…

Qt Quick-PySide2使用qrc文件

Qt Quick中PySide2使用qrc文件、Controls2设置全局样式、VSCode任务。 使用步骤 创建一个 resource.qrc 文件 <RCC><qresource prefix"/"><file>qtquickcontrols2.conf</file><file>images/images.png</file></qresource&…

反射、类的加载时机、类加载过程的详细流程图

目录 一、反射 1、静态加载 2、动态加载 二、类加载的时机 三、类加载的流程图 四、类加载的三个阶段的详细解释 1.1 加载 1.2 连接 1、验证 2、准备 3、解析 1.3 初始化 一、反射 反射机制是java实现动态语言的关键&#xff0c;也就是哦天哪故宫反射实现类动态加载…

Linux安装Oracle19c(极简版)

Oracle下载oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpmoracle-database-ee-19c-1.0-1.x86_64.rpmOracle安装 cd /opt yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm 环境变…

RHCE学习 --- 第八次作业(ansible)

RHCE学习 — 第八次作业&#xff08;ansible&#xff09; \ 一、基础环境&#xff1a; 采用一台centos7的主机为控制节点master&#xff0c;两台centos8的主机为受控节点&#xff08;node01&#xff0c;node02&#xff09; 三台主机均安装ansible并可以使用 三台主机有IP地…

My Sixty-seventh Page - 0-1背包问题理论 - By Nicolas

小尼在这里跟大家说明一下0-1背包问题的理论&#xff0c;首先我们需要认识一下什么是背包问题。小尼在这里拉一下代码随想录的代码&#xff0c;有兴趣的小伙伴也想把背包问题学好&#xff0c;可以去代码随想录看一看背包问题的讲解&#xff0c;也可以去B站看一看代码随想录对背…

java项目-第158期ssm仓库智能仓储系统_java毕业设计_计算机毕业设计

java项目-第158期ssm仓库智能仓储系统_java毕业设计_计算机毕业设计 今天分享的项目是《ssm仓库智能仓储系统》 该项目分为3个角色&#xff0c;管理员、员工、供应商。 员工角色登录后台&#xff0c;主要负责流水线工作&#xff0c;比如&#xff1a;查看供应商、 货物采购管理…

【计算机视觉OpenCV基础】实验一 图像预处理

实验一 图像预处理 计算机视觉OpenCV基础实验合辑&#xff08;实验1234扩展&#xff09; 资源下载地址&#xff1a; https://download.csdn.net/download/weixin_53403301 合辑&#xff1a;&#xff08;加在下载地址后面&#xff09; /87113581 讲义&#xff08;包括理论、图例…

MCE | 分子伴侣介导的自噬

自噬是细胞在外界环境因素的影响下&#xff0c;利用溶酶体&#xff0c;降解自身受损、变性大分子物质或者细胞器的自我消化过程。依据其发生途径&#xff0c;主要分为三种&#xff1a;巨自噬 (Macroautophagy)&#xff0c;微自噬 (Microautophagy) 和分子伴侣介导的自噬 (Chape…

MyBatis 缓存机制

文章目录一、一级缓存二、二级缓存1.cache 元素2.缓存命中率一、一级缓存 MyBatis 的一级缓存是 SqlSession 级别的缓存。如果同一个 SqlSession 对象多次执行完全相同的 SQL 语句&#xff0c;在第一次执行完成后&#xff0c;MyBatis 会将查询结果写入一级缓存中&#xff0c;此…

mysql中的binlog用法

binlog是什么 MySQL的二进制日志binlog可以说是MySQL最重要的日志&#xff0c;它记录了所有的DDL和DML语句&#xff08;除了数据查询语句select&#xff09;,以事件形式记录&#xff0c;还包含语句所执行的消耗的时间&#xff0c;MySQL的二进制日志是事务安全型的。使用mysqlb…

Kotlin语法学习(四)_空指针检查

空指针检查 空指针异常是一种不受编程语言检查的运行时异常,只能由程序员主动通过逻辑判断来避免,所以空指针异常往往比较容易出这个问题 可空类型系统 在Kotlin当中利用了编译时判空检查的机制几乎杜绝了空指针异常,Kotlin提供了一些列的工具,让我们能够轻松处理各种判空情…

Verilog 随机数及概率分布

随机数 Verilog 中使用系统任务 $random(seed) 产生随机数&#xff0c;seed 为随机数种子。seed 值不同&#xff0c;产生的随机数也不同。如果 seed 相同&#xff0c;产生的随机数也是一样的。可以为 seed 赋初值&#xff0c;也可以忽略 seed 选项&#xff0c;seed 默认初始值为…

130. 被围绕的区域

130. 被围绕的区域 给你一个 m∗nm * nm∗n 的矩阵 board &#xff0c;由若干字符 ‘X’ 和 ‘O’ &#xff0c;找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 实例1&#xff1a; 输入&#xff1a;board [[“X”,“X”,“X”,“X”],…

内容云筑底,火山引擎能否为企业添一把火?

在App里面再搭一个“今日头条”&#xff0c;让用户在自家的App里看图文、刷视频&#xff0c;这是很多企业都想干的一件事情。尤其是对于用户使用频率低的App而言&#xff0c;他们更需要依靠信息流内容加长用户停留时间&#xff0c;增加用户互动次数&#xff0c;进而留住用户&am…

神经网络和深度学习-梯度下降Gradient Descent

梯度下降 损失函数 绝大多数的机器学习模型都会有一个损失函数。比如常见的均方误差&#xff08;Mean Squared Error)损失函数&#xff1a; L(w,b)1N∑i1N(yi−f(wxib))2L(w, b)\frac{1}{N} \sum_{i1}^{N}\left(y_{i}-f\left(w x_{i}b\right)\right)^{2} L(w,b)N1​i1∑N​(y…

物理层物理层

该层解决具体比特传输问题 一般的数据通信系统如图&#xff1a; 该系统可按通信方式分为两种&#xff1a;同步/异步通信和模拟/数字通信&#xff1a; 异步通信是通信双方各自时钟独立&#xff0c;每次只传输一个字符&#xff0c;时钟在传送开始时对齐&#xff1b;这种机制简单…

[附源码]计算机毕业设计JAVA驾校管理系统

[附源码]计算机毕业设计JAVA驾校管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

Docker(四):Docker可视化管理工具

背景 在技术这一行&#xff0c;学无止境&#xff0c;无数的知识点在大脑里面堆积着。各种命令行脚本&#xff08;Python,Java,Nodejs,Linux,Docker&#xff09;数不胜数&#xff0c;如果有视图化的管理工具&#xff0c;帮我们管理着这些命令行脚本&#xff0c;岂不美哉。可以节…