平台跳跃 碰撞检测 与 大/小跳
如今,图形化编程已逐渐流行。可是有许多编程作者面对心中创想仍是“心有余而力不足”。{:5_178:}例如网页上经久不衰的‘平台跳跃类’游戏——无数次的尝试,最终或许只换来一个“鬼畜”而或“卡脚”的小人。
万事都需要引路人。今天,我将在这个帖子中,‘无微不至’地为各位致上如下图所示的程序中
平台跳跃 碰撞检测 与 大/小跳,的教程。
同时,也宣布一下我的‘暂时’回归。{:5_160:}
准备:一台能用的电脑、一个正在读帖子的编程员、编程软件、一个方形角色:(嗯...怎么这么小)
一、移动
有人也许会问:“移动有什么好讲的啊?”但是,如上图中一般,要想‘丝滑地’移动,
不能只凭一块 移动 积木就完事。还需变量的加减与乘除。(当然如果各位会 就当我没说)
首先,是“打死也不变”的‘如果’语句:
其中,‘speed_x’与跳跃出现的‘speed_y’即为角色在水平和垂直方向上的速度。
上过初二的同学们(没上过也没事)知道:力是改变而不是维持物体运动状态的原因。
所以,就像你坐火车一样,你给角色施加力的时间越长,它‘跑’得越快。
————同时,‘知周所众’物体移动必然也有摩擦力。所以便有了:
速度越快阻力越大,这是生活常识告诉我们的。。。{:5_144:}
此外,那位‘苹果树下被苹果砸’的物理学家告诉我们:万有引力。
所以:。
最后,再进行‘移动’:
最简单的一步就完成了!{:5_121:}
二、碰撞检测。
1.先随便画一个地图(横平竖直!不要斜或弯的!)
(用画长方形的工具画)
然后,新建一个函数,勾选‘运行时不刷新’:
将‘将x坐标增加()’和‘将y坐标增加()’积木分别扔里面。再跟我一起做:{:5_131:}
过程有点繁琐,简单概括就是:“把移动一次分成许多次,一次移动一点点,碰到‘场景’就‘踩急刹’。”
由于代码问题,角色如果卡在墙里(多半是刚点绿旗时),就像是拉了手刹,动不了一点。所以各位在刚开始时记得给角色设置一个合适的位置哦!
至此,你会得到一个“可以碰壁”但是“会飞”的角色。
2.检测能否跳跃。
先建立一个变量‘能否跳跃’。然后就是判定“能否跳跃”了。
这里的基础逻辑是:跳跃的条件不止‘按下上键’,还有‘能否跳跃=1’,中间“与”连接。
跳起时将‘能否跳跃’设为0,下落时碰到地板就设为1。如图所示:
自此,祝贺各位,已经能成功让自己的‘小方块’动起来了!!!{:5_179:}
三、大、小跳的区分
这个没什么好说的,就是增加了你在一次‘滞空’中可跳跃的次数,为便于区分
‘在地上’‘在空中(正在长按上键)’‘在空中(松开上键)’三种状态,
我将变量‘能否跳跃’设为1、0、-1三个数来表示,并新设变量‘跳跃次数’
大家自行体会~~{:7_216:}
自此,你已完全掌握(这谁知道)如何进行平台跳跃类游戏底层代码的编写。
希望我的帖子对各位编程朋友们有所帮助与启发!致谢!
注:附件中的程序不要解压!!!直接把后缀改成.sb3
附:在今年的青少年的线下编程比赛中,在答辩时,我看到有同学直接使用我之前分享的代码(真的很离谱!)。
关于此事,我想声明:栎阳安琪 在该论坛上所发表的一切资源,仅限于各位同学学习与引申。不能用于比赛抄袭等不正当的地方!!!
有新建议的同学可以留言哦~ 参拜大佬
{:6_215:}{:6_213:}{:6_209:} 不是,这么优质的教程怎么没人看??!!
页:
[1]