这篇文章真是让我蚌住了(
那话说回来,这令人闻风丧胆的大地图到底该如何实现呢 awa?
主人公脚本
移动
这个在大地图中和小地图类似呀。
首先,这些变量是必不可少嘚~。

然后就可以实现键盘控制和速度缓慢减小的效果了。

FAQ
啊啊啊啊!这一大段什么意思啊?

这一段实际上用了Scratch和大多数编程语言(为什么是大多数呢,因为Rust就不是awa)在布尔值的计算中会转化成数字特性(
众所周知,Scratch坐标系中向左就是负,向右就是正,所以假设按下了A键,就会向左走,也就是(0 - 1) × 2 = (-2),自然就是向左走啦~其他的也是一个道理。

这部分就是让速度慢慢地变为0,比如一开始是-2,
(-2) × 0.85 = -1.7,
(-1.7) × 0.85 = -1.445,
TIP
如果 是 #速率常数,是 ^速度X 的话,如你所见,这实际上是个反比例函数(
慢慢地缩小就变成了0。

这边就直接将x和y直接增加速度X和速度Y就可以了。
FAQ
¿为神马没有移动到XY积木?
这个在摄像头章节中会讲到。
摄像头
这大名鼎鼎的摄像头和摄像机的镜头实际上就是一个意思。这货因为跟着XY走,所以大概可以理解为显示在屏幕上所有物体的中心。
FAQ
这为什么要用它呢?
实际上没了它也彳亍,只不过是在后期实现场景的单独移动(比如逃离物理卷BOSS关中缓缓移动到BOSS的身上再回来),摄像头跟随(比如《不妙》的猫爬架&救赎中的地图缓缓地移动到角色身边),走在地图中间定在中间,走到尽头移动的效果(这几乎是每个大地图都有的吧……)等的时候还是有很大の作用嘚!
当然,小地图也是有摄像头的,只不过是摄像头的坐标是(0,0),大家都懒得写而已(
下面就定义摄像头X和摄像头Y的变量吧~

很妙。为了实现摄像头跟随的效果,我们把摄像头X和摄像头Y直接设为x和y就行啦~

把这段代码放在之前的代码之后就行啦!
如何实现上面移动的问题呢?

这个时候x = 摄像头X,y = 摄像头Y,所以x坐标和y坐标都是0,也就实现了走在地图中间时定在中间的效果(^-^)V!
实际上物体也是一个道理,上面说过可以把摄像头看成显示在屏幕上所有物体的中心,所以也就是:
(物体X - 摄像头X, 物体Y - 摄像头Y)
现在有个大问题,就是这人奋不顾身,会从地图上掉下去(
快让摄像头不要跑出去!
这段代码很简单,就是如果摄像头跑出去了,就把他硬生生拉回来。
把这段代码放在摄像头设为XY的代码之后就行啦~ 千万不要放在移动代码后面 w
这样在返过去看上面的移动代码,假设这时候x = -1145,而摄像头X在不出现空白的情况下最大X = -1045,那么:
(-1145) - (-1045) = (-1145) + 1045 = -100,
主角就向左走,也就实现了走到尽头移动的效果的效果。
FAQ
什么是<地图上|下|左|右 最 大|小 X|Y>?
实际上就是角色(上|下|左|右)在不出现空白的情况下能走到的(X|Y)。
检测碰撞
这里就不得不提一下碰撞箱了awa~
你可以把你看见的图案看做一个贴纸,而碰撞箱就是一个跟在贴纸下面的一块小钢板,是有碰撞面积的物体。
所以这个在你眼中看到的物体被称为贴图,而真正的物体是碰撞箱。
FAQ
我什么时候要用碰撞箱?
- [这一项用于地图] 当地图是图片导入的时候,你会发现物体周围还有一个白色的正方体,它的碰撞形状就会是一个正方体,这样就会引起碰撞的极度不适,这个时候就可以用碰撞箱大概画出主体的真正碰撞面积。
- [这一项用于地图] 当地图有背景形状时使用。
- [这一项用于物体] 当物体
歪曲扭八形状复杂或是图片导入的时候,可以直接用半径足够适应造型的圆形碰撞箱,这样更易于碰撞。
话说几乎每个大地图作品都有,用就完事儿了!
那碰撞箱和角色的碰撞到底怎么实现呢?
方法1
这个方法是MBZZW漫步者之王的作品隔离区中使用的方法,相比于方法2代码更多,效果更好。

FAQ
!!!这太复杂了吧!
看起来很复杂对吧?实际上就是在移动的时候尝试继续向移动对应的方向走,如果碰到碰撞箱了就继续走,如果还是碰到了碰撞箱,就不更新x或y的值,如果没有碰到,那就继续执行将xy增加速度XY,并回到试探之前的坐标。

这样段我也不大理解(大概就是根据速度动态移动距离吧!
方法2
这个方法是Arkos所有大地图作品普遍使用的方法。

这个方法也是在试探位置,如果碰到就返回原来的位置。
地图移动
地图移动和角色的移动应该是相反的,或者说按照上面物体位置可以看成是:
(0 - 摄像头X, 0 - 摄像头Y)。
这很简单,就不用代码了吧~
这一篇文章并没有讲述具体的游戏主体,这里就贴一下哈。



