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