74浏览
查看: 74|回复: 2

[教程] 平台跳跃 碰撞检测 与 大/小跳

[复制链接]
    如今,图形化编程已逐渐流行。可是有许多编程作者面对心中创想仍是“心有余而力不足”。例如网页上经久不衰的‘平台跳跃类’游戏——
无数次的尝试,最终或许只换来一个“鬼畜”而或“卡脚”的小人。


   万事都需要引路人。今天,我将在这个帖子中,‘无微不至’地为各位致上如下图所示的程序中
平台跳跃 碰撞检测 与 大/小跳图1
平台跳跃 碰撞检测 与 大/小跳,的教程。
同时,也宣布一下我的‘暂时’回归。


准备:一台能用的电脑、一个正在读帖子的编程员、编程软件、一个方形角色:平台跳跃 碰撞检测 与 大/小跳图7  (嗯...怎么这么小)




一、移动
  有人也许会问:“移动有什么好讲的啊?”但是,如上图中一般,要想‘丝滑地’移动,
不能只凭一块 移动 积木就完事。还需变量的加减与乘除。(当然如果各位会 就当我没说)


首先,是“打死也不变”的‘如果’语句:
平台跳跃 碰撞检测 与 大/小跳图2
其中,‘speed_x’与跳跃出现的‘speed_y’即为角色在水平和垂直方向上的速度。
上过初二的同学们(没上过也没事)知道:力是改变而不是维持物体运动状态的原因。
所以,就像你坐火车一样,你给角色施加力的时间越长,它‘跑’得越快。
————同时,‘知周所众’物体移动必然也有摩擦力。所以便有了:
平台跳跃 碰撞检测 与 大/小跳图3
速度越快阻力越大,这是生活常识告诉我们的。。。


此外,那位‘苹果树下被苹果砸’的物理学家告诉我们:万有引力。
所以:平台跳跃 碰撞检测 与 大/小跳图4


最后,再进行‘移动’:平台跳跃 碰撞检测 与 大/小跳图5
最简单的一步就完成了!
二、碰撞检测。

    1.先随便画一个地图(横平竖直!不要斜或弯的!)
    (用画长方形的工具画)
平台跳跃 碰撞检测 与 大/小跳图6
然后,新建个函数,勾选‘运行时不刷新’:
平台跳跃 碰撞检测 与 大/小跳图8
将‘将x坐标增加()’和‘将y坐标增加()’积木分别扔里面。再跟我一起做:
平台跳跃 碰撞检测 与 大/小跳图9
过程有点繁琐,简单概括就是:“把移动一次分成许多次,一次移动一点点,碰到‘场景’就‘踩急刹’。”
由于代码问题,角色如果卡在墙里(多半是刚点绿旗时),就像是拉了手刹,动不了一点。所以各位在刚开始时记得给角色设置一个合适的位置哦!


至此,你会得到一个“可以碰壁”但是“会飞”的角色。


2.检测能否跳跃。
    先建立一个变量‘能否跳跃’。然后就是判定“能否跳跃”了。
这里的基础逻辑是:跳跃的条件不止‘按下上键’,还有‘能否跳跃=1’,中间“与”连接。
跳起时将‘能否跳跃’设为0,下落时碰到地板就设为1。如图所示:
平台跳跃 碰撞检测 与 大/小跳图10
自此,祝贺各位,已经能成功让自己的‘小方块’动起来了!!!


三、大、小跳的区分
    这个没什么好说的,就是增加了你在一次‘滞空’中可跳跃的次数,为便于区分
‘在地上’‘在空中(正在长按上键)’‘在空中(松开上键)’三种状态,
我将变量‘能否跳跃’设为1、0、-1三个数来表示,并新设变量‘跳跃次数’
大家自行体会~~
平台跳跃 碰撞检测 与 大/小跳图11


自此,你已完全掌握(这谁知道)如何进行平台跳跃类游戏底层代码的编写。




希望我的帖子对各位编程朋友们有所帮助与启发!致谢!


注:附件中的程序不要解压!!!直接把后缀改成.sb3




附:在今年的青少年的线下编程比赛中,在答辩时,我看到有同学直接使用我之前分享的代码(真的很离谱!)。
         关于此事,我想声明:栎阳安琪 在该论坛上所发表的一切资源,仅限于各位同学学习与引申。不能用于比赛抄袭等不正当的地方!!!






代码

代码

平台跳跃2 - 副本.zip

5.77 KB, 下载次数: 5

不要解压!把后缀改成.sb3

栎阳安琪  见习技师
 楼主|

发表于 前天 15:58

有新建议的同学可以留言哦~
回复

使用道具 举报

凉皮周  中级技匠

发表于 前天 18:14

参拜大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail