前言:本节主要内容为角色添加跟随相机cinemachine,介绍一下预制体,顺便优化一下跳跃。
一、Cinemachine插件
游戏制作到这个阶段,我们已经可以操作角色在场景中奔跑跳跃吃果子了,但我们很快发现角色只能在眼前的固定的屏幕中活动,一旦超出边界角色就看不见了。
这是因为我们当前的相机是固定的,不会随着角色移动。这就需要我们去写代码控制相机随着角色移动而移动,大致思路是在主相机main cinema上挂载一个脚本,把角色的坐标数据传入,在这个脚本中不断刷新相机坐标,保持和角色一致。
实际上这个功能有一个插件Cinemachine,帮我们解决了相机跟随角色移动的问题,这里就简单介绍一下如何使用该插件。
1.安装Cinemachine
在工具栏Window -> Package Manager -> Packages:Unity Registry中搜索Cinemachine,下载安装。
2. 创建Cinemachine
安装好后,在Hierarchy窗口右键会多出一个Cinemachine的选项,这里创建一个2D的Cinemachine。
3.添加跟随目标Player
Cinemachine需要设定一个Follow来决定相机是跟随那个目标,这里需要把角色Player设置上去。
这时我们再运行游戏操作角色时,就能看到随着角色移动场景也跟着移动。到这一步,我们可以在场景中添加更多地形和环境来让角色活动了。
二、预制体Perfab
场景变大了,我们需要更多的cherry来角色“吃”。虽然可以通过简单的复制粘贴来增加cherry,但这就有一个问题:如果需要对cherry进行修改,那么场景中有多少cherry就要改多次。
预制体Perfab解决了这个问题,在把游戏中的一个物体改为预制体Perfab时,对这个物体修改就能传递到其他同源的物体上。
1. 一如惯例在Project -> Assets 中创建 Perfabs -> Collections文件夹
2. 把Hierarchy窗口中的cherry拖拽到这个文件夹中,此时能看到Hierarchy窗口中的cherry变成了蓝色,这说明cherry已经成为了一个预制体。
以后再需要用到cherry布置在游戏中时,直接把Perfabs -> Collections中的cherry拖拽到场景或Hierarchy窗口中就行了。
3.修改预制体有两种方式
a. 在Hierarchy窗口中选中预制体进行修改,修改完后把改动提交到所以其他同源预制体上
b.打开预制体Open进行修改,这样改动会自动同步到所有同源预制体上(推荐)
打开预制体后显示界面
通过预制体给场景添加更多的cherry吧!
三、二段跳
当角色在场景中活动时,我们会发现有些过高的站台跳不上去,这里可以增加角色的跳跃力jumpForce来解决,当然还有另一种方式更炫酷的方式:二段跳
1. 打开PlayerControl脚本,添加如下代码
public class PlayerControl : MonoBehaviour
{
private int jumpCount;//添加部分
private void MidAirMovement()//修改整个MidAirMovement
{
//角色在地面且y轴速度很小时重置跳跃次数
if (isOnGround && player_Rbody.velocity.y < 0.1f)
jumpCount = 2;
if (isJumpPressed && jumpCount > 0)
{
//在空中时减少一次跳跃
if (!isOnGround)
jumpCount--;
isJumpPressed = false;
if (!isCoruchHeld)
player_Rbody.velocity = new Vector2(0, jumpForce);//对角色刚体添加纵向的力
jumpCount--;//每跳一次减少一次跳跃
}
}
}
至此完成了角色的操作部分,接下来就是敌人设计了。