学习资源:B站 M_Studio《Unity教程2D入门》09-10
Unity Assets:Sunnyland
Day4
cinema跟随
方法一:transform
思路:镜头的x,y与Player的保持一致即可
代码如下:
CameraController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour
{
public Transform player;
// Update is called once per frame
void Update()
{
transform.position = new Vector3(player.position.x, player.position.y, -10);
}
}
属性面板直接拖入player节点,获取的就是player的transform组件。
public Transform player;
锁定y轴,就不随着角色跳跃而在竖直方向移动镜头:
transform.position = new Vector3(player.position.x, 0, -10);
在写脚本的时候为什么会有大写的Transform和小写的transform?
大写的就是指Transform 类型,小写的是指挂该脚本的节点的transform
方法二:Cinemachine 插件
为了解决角色移动跳跃时,背景边界的问题。
安装成功之后新建一个2D camera 它会自动复制main camera的参数,并替代掉它。
这个camera有一些参数,需要调一下。
Follow的意思是相机要跟随的对象(拖入player)
试玩一下,发现镜头随着角色的移动有一定的延迟效果,非常自然!
Lens里面是一些相机参数(暂时不用调,了解即可)
Body 的参数
Dead Zone是指:如果玩家在此区域中,镜头不移动,调不调都行,让我想起来造梦西游的游戏效果。(大型游戏的镜头跟踪效果)
很多时候角色并不是在镜头的中央,可以调节Screen X\Y
比如修改X,就可以让角色一直在镜头的左侧显示。
如何让游戏角色不跳出边界?
思路:给背景添加collider 镜头边边碰到了就不能出去了
第一步:给相机添加Confiner
然后就会发现有一个参数是Bounding Shape 需要复制一个碰撞体
给背景添加collider的时候必须添加polygon collider (意为多边形碰撞体)
注意,要将trigger勾选,只作为触发碰撞体使用,不然会把player直接弹飞
寻找collider时,点击那个圆圆圈,即可看见现有的所有collider
ps:polygon碰撞体默认是5个点,如果想去掉点,按下ctrl然后点击那个点就可以了
这样,无论角色跳的多高,当达到边界时,镜头就不会再向上移动了。