【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)

【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)

文章目录

一、前言二、场景搭建1、创建工程2、创建地图

三、主角1、创建主角2、主角移动控制3、测试主角移动

四、摄像机跟随五、屏幕边缘限制镜头移动六、最终效果七、工程源码

一、前言

嗨,大家好,我是新发。 有老铁留言问我能不能写一下2D镜头跟随以及人物移动到屏幕边缘限制镜头的文章, 这个功能本来我想用代码自己写,但是我想起了很久以前我看过Unity官方写的一个Cinemachine套件,于是我打算使用它来实现这个功能,话不多说,我们开始吧~

二、场景搭建

为了演示,我先快速搭建一个场景。

1、创建工程

我们先创建一个2D模板的Unity工程,名字叫2DCameraFollowDemo吧~

2、创建地图

使用Tilemap和地图生成器生成地图,

三、主角

1、创建主角

在阿里图库中找个图标作为主角,https://www.iconfont.cn/ 放到地图中,如下,

2、主角移动控制

写个主角控制脚本,代码如下:

using UnityEngine;

public class Player : MonoBehaviour

{

// 移动速度

public float speed = 10;

Rigidbody2D rigidbody2d;

Vector2 currentInput;

void Start()

{

rigidbody2d = GetComponent();

}

void Update()

{

float horizontal = Input.GetAxis("Horizontal");

float vertical = Input.GetAxis("Vertical");

// 获取键盘输入:A W S D或上下左右键

currentInput = new Vector2(horizontal, vertical);

}

private void FixedUpdate()

{

Vector2 position = rigidbody2d.position;

position = position + currentInput * speed * Time.deltaTime;

// 通过刚体来移动,防止碰撞抖动

rigidbody2d.MovePosition(position);

}

}

挂到主角身上,并添加Rigidbody2D、 注意Rigidbody2D组件的重力缩放设置为0,否则主角会受到重力而往下掉,把Freeze Rotation Z勾选上,防止主角碰撞时产生Z轴旋转,

3、测试主角移动

此时运行Unity,效果如下,可以正常控制主角移动,

四、摄像机跟随

接下来我们来做摄像机跟随,要用到Cinemachine插件,打开Package Manager,搜索Cinemachine,点击Install, 插件安装完毕后,在Hierarchy窗口中右键菜单Cinemachine / 2D Camera, 此时会创建一个虚拟摄像机, 我们选中它,赋值Follow为主角物体,如下, 此时运行Unity,效果如下,摄像机已经可以跟着主角移动了,

五、屏幕边缘限制镜头移动

我们可以看到主角移动到地图边缘时,看到了地图外白色的场景,我们想限制镜头的移动范围,让其不超过地图边缘。 选中虚拟摄像机,然后点击Add Extension的select下拉框, 选择CinemachineConfiner, 它会帮我们挂上CinemachineConfiner组件,可以看到它需要一个形状碰撞体来限定界限, 我们创建一个空物体,命名为edge, 为其添加PolygonCollider2D组件, 点击这个按钮可以编辑多边形形状, 调整多边形的形状使其与地图边缘吻合, 记得把多变形碰撞体的Is Trigger勾选上,否则会与主角发生碰撞, 最终给虚拟相机赋值Bounding Shape 2D为我们的多边形碰撞体,

六、最终效果

最终运行Unity,效果如下,可以看到,主角移动到地图边缘时,摄像机被限制了移动,

七、工程源码

本文工程源码我已上传到CODE CHINA,地址:https://codechina.csdn.net/linxinfa/2DCameraFollowDemo 感兴趣的同学可自行下载学习,注:我使用的Unity版本为:Unity 2021.1.9f1c1 (64-bit) 好了,就写到这里吧。 我是林新发:https://blog.csdn.net/linxinfa 原创不易,若转载请注明出处,感谢大家~ 喜欢我的可以点赞、关注、收藏,如果有什么技术上的疑问,欢迎留言或私信,拜拜~

相关推荐

正品低价香烟微商货源怎么找?行家教你三招避坑
365bet体育投注网

正品低价香烟微商货源怎么找?行家教你三招避坑

📅 09-06 👁️ 3669
【石榴裙】石榴裙的历史来源 石榴裙的服装特点是什么
best365网页版登录官网

【石榴裙】石榴裙的历史来源 石榴裙的服装特点是什么

📅 08-11 👁️ 2328
阿里云域名实名认证需要多长时间通过?
best365网页版登录官网

阿里云域名实名认证需要多长时间通过?

📅 07-18 👁️ 3284