在游戏制作中,如果游戏场景超出一个屏幕,就需要通过镜头移动来使角色重新回到屏幕当中。 在本次教程中,我们将学习如何平滑移动镜头、以及如何控制镜头的移动边界。


3、玩家不需要真正看见该对象,在场景开始时,将镜头对象的不透明度设为0.

5、实现镜头跟随逻辑如果要对某个物体进行镜头跟随,可以在该对象身上添加镜头跟随能力,本篇教程不使用这种方式,而是通过事件表来控制镜头移动。使用系统组件提供的聚焦到某处

创建玩家角色
1、为了看到效果,我们创建一个可移动的玩家角色,并让镜头对象始终跟随

3、使镜头对象的坐标始终与玩家保持一致

5、镜头的平滑跟随虽然上述操作可以实现镜头的跟随,但是由于我们直接将聚焦的坐标设置到镜头对象上,所以会使镜头跟随效果显得很生硬。下面我们针对聚焦事件进行改良,使镜头平滑的移动到镜头对象上,而不是立刻移动过去。要实现平滑移动效果,我们需要用到lerp(a,b,c)表达式。

7、改良事件后,预览游戏可以看到,镜头虽然跟随玩家,但是速度上会慢一拍,需要等待一小段时间才会到达玩家位置。
设置镜头移动边界
1、虽然我们实现了镜头的平滑移动,但是上述事件会让玩家始终处于镜头的中心位置。 在一些有场景边界的游戏中,例如马里奥,玩家在最左侧或最右侧时,镜头是不会跟随玩家的。因为,下面我们要给镜头移动增加限制创建限制边界对象为了更方便的设置镜头移动边界,我们创建4个镜头边界对象,并分别设置锚点到边缘位置


2、将4个镜头边界对象拖入场景

3、需要注意的是,镜头的最小边界为窗口大小,也就是上图中的虚线部分。上下左右4个边界对象不能放错方向。例如,镜头边界_上必须放置在镜头边界_下的上方
根据镜头边界改良镜头跟随逻辑
1、我们使用clamp(x,min,man)表达式来限制镜头移动的范围。具体写法:X:clamp(lerp(scrollx,镜头对象.X,dt5),镜头边界_左.x+(originalviewportwidth/2),镜头边界_右.x-(originalviewportwidth/2))Y: clamp(lerp(scrolly,镜头对象.Y,dt5),镜头边界_上.y+(originalviewportheight/2),镜头边界_下.y-(originalviewportheight/2))

2、在完成上面的操作后,预览游戏可以看到,镜头只会在镜头边界内进行跟随想要更改镜头边界的范围,只需拖动4个边界对象即可(每个镜头边界只管理一个方向,镜头边界_上的X方向不影响效果,只需关注Y坐标即可)

3、以上便是镜头控制的教程,重点是lerp和clamp表达式的运用。您可以自行更改参数,调整镜头跟随速度或更改镜头跟随的角色