【Scratch/教程/入门级】手把手教你用Scratch实现大地图游戏!
scratch吧
全部回复
仅看楼主
level 12
嗨,我是气功豆
最近我的项目又咕了,反正闲着也是闲着,不如来写点东西[滑稽]
反正是挺简单的东西,虽然再写出来已经火星了,但是看到目前sc吧“惨淡”的发帖回帖数量还是决定发发东西了[汗]
正文开始
----------原文作者为会气功的豌豆,仅在百度贴吧Scratch吧发布,未授禁转----------
【第一步】导入/绘制素材
要注意的是,如果在舞台区发现矢量素材有切片现象,就在周围勾上一圈透明图形就行了。
其他无需多言[勉强]
我暂时添加了主角和地图的贴图,先实现基本功能再说()
【第二步】衔接地图
由于地图是上下左右衔接的,所以务必要检查所有地图块是否能正常衔接没有瑕疵。
我比较懒,就随便画了点东西()
新建变量,用于记录主角的xy坐标
先将地图克隆出来。
众所周知,sc默认舞台的高度是360,宽度是480
所以,上下两张地图之间的距离就是360px(pixel,像素)
横向地图同理,两张地图之间的距离是480px
那么,这样我们就可以开始制作大地图了——
……吗?
在原版的sc里,角色移动的位置是受限制的,也就是说,我们没法做到完全的移动到0,360的位置:
那怎么办?
又众所周知,sc角色受到位置移动的限制的具体数值是根据角色大小实时计算的(也就是说,限制的位移幅度是和角色大小有关的),而且成反比(应该吧?我也没测试过[滑稽])
所以,办法就来了:创建一个巨大的造型,移动到指定位置再换回造型,然后趁程序不注意放个克隆体[滑稽]
然后把全部的地图块都显示出来。
这才刚刚开始呢[太开心]
(今晚没时间了,明天继续写)
2022年07月02日 10点07分 1
level 14
顶
2022年07月02日 14点07分 2
谢顶[太开心]
2022年07月03日 09点07分
level 12
前排支持
2022年07月03日 00点07分 4
xxzc
2022年07月03日 09点07分
level 12
今天接着更新……
【第三步】角色和摄像机的移动
其实很多游戏的摄像机都是有缓动的,比如元气骑士。
如果实在不知道的话,就想一下原本的元气骑士(有缓动,跟踪玩家位置)和操控角色一直处于屏幕中间位置(无缓动,直接把摄像头塞到玩家头顶)的区别吧)[滑稽]
因此,我们还需要新建CamaraX和CamaraY变量记录相机位置,并且更改他们。
(字符串“速度”需要更改为具体数值,数值越大速度越慢,推荐3-20左右我这里设为10)
并且根据Camara的XY移动地图和角色。
怎么移动呢?
初始的摄像头位置是深蓝色框,整幅地图的中心点0,0是turbowarp(就是那个粉色的团子)所在的位置。如果turbowarp移动到黄色框位置,那么摄像头也应该跟踪到浅蓝色框位置。根据小学科学课本上的知识(真的真的是小学知识,好像是五年级来着),物体的运动是相对的,想要描述物体的运动就必须找一个参照物。以我们的电脑屏幕做参照物来说,要想使我们“看起来”向上移动了,就需要使地图向下运动。所以:
变量MapX/YSelf用来记录每一个地图块的初始位置,不能直接使用x/y坐标模块是因为它们是会改变的。
玩家移动随便写写就好了,没什么可说的。当然你要想的话也可以给玩家写上缓动脚本,不过我是觉得没什么必要,毕竟地图都缓动了,玩家换不换动也许也看不大出来(()[滑稽]
接下来就是解决存在的一些问题了。
观察上图,我们可以发现两个问题:
1.地图受限的问题并没有完全被解决。因为这时地图的实际位置是大于可以移动位置的,而造型又没用应用“巨大的空白造型”(仅在克隆事应用了)。
2.底部到达地图边缘的时候摄像头并没有停下来,而是继续运动,但实际上远处已经没什么东西可以看了,所以只能看到白花花的背景。
第一个问题挺简单的,只要切一下造型就行了,如图。[滑稽]
第二个问题其实也挺简单的,就是CamaraX/Y大于或小于指定数值时将其设为指定数值就可以了。
此时的角色仍然是可以穿过障碍物和边缘的,不过这些东西就等我写碰撞箱的时候再讲吧[滑稽]
2022年07月03日 09点07分 5
level 7
我也会做大地图,但不过使用SC的BUG做的[滑稽][滑稽][滑稽][滑稽]
2022年07月03日 12点07分 6
谁做游戏不用点sc的bug啊[滑稽])
2022年07月05日 01点07分
2022年07月05日 13点07分
level 12
我靠我都忘了我有这个帖子了()()
马上恢复更新,等一下我超()()
2022年07月23日 10点07分 7
level 12
【第四步】碰撞箱
简单来说就是阻止你穿过房子之类的障碍物。
复制一遍角色:
然后角色碰撞箱吧影子去掉,地图碰撞箱则是哪里无障碍物去哪里。
然后虚像特效拉满也行[滑稽],因为拉了虚像特效之后角色仍然是可以被<碰到(角色)>模块侦测到的。
总之就是想尽一切办法让角色别卡进障碍物里()
记得把角色里的控制脚本删掉只留碰撞箱的,主角色只负责移动和切造型就行了。
该删减的也都删减掉。
最后是边缘碰撞,随便做一下就行了,记得舞台外是不给碰撞的,所以把边缘往里挪点。
---------
这个碰撞箱是赶工出来的,其实完全可以做的更好。不过无所谓了,能用就行(
2022年07月23日 11点07分 8
@- 也行[滑稽]
2022年07月29日 12点07分
@- [滑稽]
2022年07月31日 08点07分
level 12
【第五步】后面的东西
要制作出来游戏还要做各种ui界面包括血条能量条背包什么的,但是由于这只是一个大地图教程就先不说了。
还有商店界面什么的,其实感觉挺简单的(
------完结撒flowey------
2022年07月23日 11点07分 9
level 1
为什么我我的sc3界面和你的不一样,你的功能为什么有那么多
2022年07月24日 08点07分 10
他用的是turbowarp
2022年07月25日 05点07分
level 12
后排[haha][你懂的][胜利]
2022年07月25日 11点07分 11
level 1
请问怎么实现敌人在地图外移动
2022年09月03日 05点09分 12
把敌人坐标存列表里,并据此判断是否位于摄像机范围内
2022年09月05日 09点09分
1