二.制作相机模块
了解相对运动
相对运动,在物理上是这样的👇
相对运动是指一物体相对另一物体的位置随时间而改变,此物体对另一物体发生了运动,此物体处于相对运动的状态。如果相互之间的位置并不随时间而改变,则此物体即在相对静止状态之中。物体相对于其他运动的位置变化,叫做相对运动。
什么,概念你没听懂?
试想一下,从行驶在高速公路上的汽车的视角来看,两向隔离的那许多根绿色小条,是不是一直往后运动呢?
以这个现象作为原形,我们可以让背景地图反向移动来达到从玩家视角来看是游戏角色移动的效果。
制作相机模块
我们将制作一个 用地图移动代替玩家移动 的相机模块,并将 玩家和地图的相对坐标 映射成 舞台坐标。
玩家移动部分
我们新建两个变量:玩家x和相机x
然后,切换到“玩家”角色,用 玩家x 变量的改变来代替x坐标的改变
最后,将 x坐标 换成地图相对位置映射到舞台中的位置:
这时,有人就会问了:
“啸天犬啸天犬,为什么最后要*0.2呀?”
“0.2”的意义
这个0.2,其实就是我们代码中“非线性”的体现了。
这里我们需要先理解一下非线性。
以通俗的来说,非线性就是越来越慢(或越来越快),直至无限接近于目标数
比方你有10个硬币
🪙🪙🪙🪙🪙🪙🪙🪙🪙🪙
你把你的20%都给我
那我们用10*20%
也就是10*20/100
也就是10*0.2
也就是2个,对吧~
🪙🪙
你要给我30%呢? 3个
🪙🪙🪙
40%? 4个 🪙*4
对吧?但是我们把它套上了无限循环🔁
意味着你还要给我你剩下的(8个)的20%
也就是8*20%,也就是1.6个
我就有1.6+2=3.6个了,对吧
一直不断地增加,直到你把所有的都给我~
那么这时候会先很快很快地变化,再慢下来,最后你的硬币无限接近于0
地图部分
我们切换到“地图”角色。
先循环,把相机x设为玩家x。
图层排序
由于之后会添加很多组件和交互,我们需要对图层进行排序。
我们可以使用 图层管理 拓展来实现排序。
这里解释几个概念,我用图来表示
层级越高,越靠前
图层排序值(也称层级内排序值) 越大,越靠前
我们创建一个文件夹,区分层级(右键角色选择创建):
那我们先定义一个层级,并移到对应的层级:
由于层级参数过长被省略,这里给出完整的,复制进去即可,当然,你也可以根据自己的理解分层: 玩家层,交互侦测层,组件A层,NPC层,组件B层,地图层
组件A层在NPC前,B层在NPC后
随后,我们顺便把玩家的图层也给做了
(创建“玩家层”文件夹)
(添加设置层级的代码)
设置x坐标
根据相对运动的概念,我们将地图的x坐标(指地图在舞台上的绝对坐标)设为相机x的反向:
同理,也可写成 (-1)*相机x
设置地图的图层
我们将场景1的图层设置最底层
- 层级内排序值(即图层排序值)是克隆体独立的
- 之所以设置为1.00001,是为了与其他的层级和层级内图形区分,我们习惯将前面的数字设为层级优先级,后面的小数再分高低,这样更加直观
测试
好,测试时间到,让我们打破那面绿旗!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=bugdog-story/bugdog/lec02b&type=comment"
title="{跟着多bug的啸天犬制作剧情解密游戏 02b}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>